我正在使用Confluent kafka C#客户端。如何从这个主题中获取最新的偏移?
答案 0 :(得分:2)
除了上一个答案,您还可以使用
List<TopicPartitionOffsetError> Position(IEnumerable<TopicPartition> partitions)
对于给定的主题/分区
,它将返回从librdkafka轮询的最后一个偏移量对于来自消费者的最新提交偏移
,您有一个类似的Committed
方法
您还可以查询最新的已知偏移量
WatermarkOffsets QueryWatermarkOffsets(TopicPartition topicPartition, TimeSpan timeout)
它会向kafka集群发送请求。呼叫阻塞,设置适当的超时。目前,您无法一次在多个分区上发送请求。 您可以使用它来获取最后已知的偏移量,以计算滞后
还有
WatermarkOffsets GetWatermarkOffsets(TopicPartition topicPartition)
将查询librdkafka中的内部状态,并返回INVALID_OFFSET(-1001)。您可以使用它来检测由于处理数据而导致的延迟。 (该方法的位置和结果之间的差异)
答案 1 :(得分:0)
当您收到消息时,它应包括主题,分区和偏离的位置(除了键和值)。
来自example here:
consumer.OnMessage += (_, msg)
=> Console.WriteLine($"Topic: {msg.Topic} Partition: {msg.Partition} " +
$"Offset: {msg.Offset} {msg.Value}");
当事件到达每个主题分区的末尾时,您也会收到一个事件
consumer.OnPartitionEOF += (_, end)
=> Console.WriteLine($"Reached end of topic {end.Topic} partition {end.Partition}" +
$" , next message will be at offset {end.Offset}");
答案 2 :(得分:0)
我没有从消费者那里检索偏移信息(我不想先消费消息),而是能够从生产者那里读取主题偏移(df2 = df.merge(grouped, on='Cabin')
和high
),如下所示:
low