Orleans.KafkaStreamProvider.KafkaQueue.KafkaQueueAdapterReceiver.Initialize C# (CSharp) Method

Initialize() public method

public Initialize ( System.TimeSpan timeout ) : System.Threading.Tasks.Task
timeout System.TimeSpan
return System.Threading.Tasks.Task
        public async Task Initialize(TimeSpan timeout)
        {
            bool shouldCreate = false;

            try
            {
                if (_options.ShouldInitWithLastOffset)
                {
                    CurrentOffset = await _consumer.FetchLastOffset();
                    _logger.Verbose("KafkaQueueAdapterReceiver - Initialized with latest offset. Offset is {0}", CurrentOffset);
                }
                else
                {
                    CurrentOffset = await _consumer.FetchOffset(_options.ConsumerGroupName);
                    _logger.Verbose("KafkaQueueAdapterReceiver - Initialized with ConsumerGroupOffset offset. ConsumerGroup is {0} Offset is {1}", _options.ConsumerGroupName, CurrentOffset);
                }
            }
            catch (KafkaApplicationException ex)
            {
                // This is the error kafka returns when the consumer group doesn't exist
                if (ex.ErrorCode == (int)ErrorResponseCode.UnknownTopicOrPartition)
                {
                    shouldCreate = true;
                }
                else
                {
                    throw;
                }
            }

            if (shouldCreate)
            {
                CurrentOffset = await _consumer.FetchLastOffset();
                await _consumer.UpdateOrCreateOffset(_options.ConsumerGroupName, CurrentOffset);
                _logger.Verbose("KafkaQueueAdapterReceiver - Offset was not found for ConsumerGroup {0}, saved the latest offset for the ConsumerGroup. Offset is {1}", _options.ConsumerGroupName, CurrentOffset);
            }

            CounterActiveReceivers.Increment();
        }

Usage Example

        public async Task InitializeGetLastOffsetTest()
        {
            var wantedOffset = 10;

            Mock<IManualConsumer> consumerMock = new Mock<IManualConsumer>();

            Mock<IKafkaBatchFactory> factoryMock = new Mock<IKafkaBatchFactory>();

            consumerMock.Setup(x => x.FetchLastOffset()).ReturnsAsync(wantedOffset);

            KafkaQueueAdapterReceiver adapterReceiver = new KafkaQueueAdapterReceiver(_id, consumerMock.Object, _options, factoryMock.Object, _logger);

            await adapterReceiver.Initialize(TimeSpan.MaxValue);

            Assert.AreEqual(wantedOffset, adapterReceiver.CurrentOffset);
        }
All Usage Examples Of Orleans.KafkaStreamProvider.KafkaQueue.KafkaQueueAdapterReceiver::Initialize