KafkaNet.MetadataQueries.GetTopicOffsetAsync C# (CSharp) Method

GetTopicOffsetAsync() public method

Get offsets for each partition from a given topic.
public GetTopicOffsetAsync ( string topic, int maxOffsets = 2, int time = -1 ) : Task>
topic string Name of the topic to get offset information from.
maxOffsets int
time int
return Task>
        public async Task<List<OffsetResponse>> GetTopicOffsetAsync(string topic, int maxOffsets = 2, int time = -1)
        {
            await _brokerRouter.RefreshMissingTopicMetadata(topic).ConfigureAwait(false);
            var topicMetadata = GetTopicFromCache(topic);

            //send the offset request to each partition leader
            var sendRequests = topicMetadata.Partitions
                .GroupBy(x => x.PartitionId)
                .Select(p =>
                    {
                        var route = _brokerRouter.SelectBrokerRouteFromLocalCache(topic, p.Key);
                        var request = new OffsetRequest
                                        {
                                            Offsets = new List<Offset>
                                                {
                                                    new Offset
                                                    {
                                                        Topic = topic,
                                                        PartitionId = p.Key,
                                                        MaxOffsets = maxOffsets,
                                                        Time = time
                                                    }
                                                }
                                        };

                        return route.Connection.SendAsync(request);
                    }).ToArray();

            await Task.WhenAll(sendRequests).ConfigureAwait(false);
            return sendRequests.SelectMany(x => x.Result).ToList();
        }

Usage Example

Ejemplo n.º 1
0
        public void GetTopicOffsetShouldQueryEachBroker()
        {
            var routerProxy = new BrokerRouterProxy(_kernel);
            var router = routerProxy.Create();
            var common = new MetadataQueries(router);

            var result = common.GetTopicOffsetAsync(BrokerRouterProxy.TestTopic).Result;
            Assert.That(routerProxy.BrokerConn0.OffsetRequestCallCount, Is.EqualTo(1));
            Assert.That(routerProxy.BrokerConn1.OffsetRequestCallCount, Is.EqualTo(1));
        }
All Usage Examples Of KafkaNet.MetadataQueries::GetTopicOffsetAsync