【问题标题】:kafka offset value differs between __consumer_offset and actual topic offset__consumer_offset 和实际主题偏移量之间的 kafka 偏移值不同
【发布时间】:2019-01-06 02:42:33
【问题描述】:

为什么实际主题中的偏移值与同一主题的__consumer_offset中的偏移值不同? PFB 偏移位置以及使用的命令。

__consumer_offsets_13
=====================================
[root@node1 __consumer_offsets-13]# /opt/kafka_2.11-0.10.1.1/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --deep-iteration --print-data-log --files ./00000000000000000000.log | tail -n 5
_offset: 41368_ position: 4190035 CreateTime: 1532888732120 isvalid: true payloadsize: 28 magic: 1 compresscodec: NoCompressionCodec crc: 1789813648 keysize: 43 key: my_consumer_groupmy_topic payload: Ad�I��d�p-�

my_topic
=====================================
[root@node1 __consumer_offsets-13]# /opt/kafka_2.11-0.10.1.1/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --deep-iteration --print-data-log --files ../my_topic-0/00000000000000000000.log | tail -n 5
offset: 2080 position: 315620 CreateTime: 1532891670673 isvalid: true payloadsize: 118 magic: 1 compresscodec: NoCompressionCodec crc: 744326405 payload: {message_content_1}
_offset: 2081_ position: 315772 CreateTime: 1532891670673 isvalid: true payloadsize: 118 magic: 1 compresscodec: NoCompressionCodec crc: 2573656188 payload: {message_content_2}

我错过了什么?

【问题讨论】:

  • 对于每个消费者组 ID 和主题的每个分区,偏移量也是独立存储的。

标签: apache-kafka kafka-consumer-api


【解决方案1】:

kafka.tools.DumpLogSegments 工具打印日志的内容。

您在针对__consumer_offsets 运行它时看到的偏移量是包含消费者组偏移量的消息的偏移量。不是消费组的偏移量!

消费者组的实际偏移量包含在该消息的有效负载中。在您的输出中,它显示为payload: Ad�I��d�p-�,因为它需要被解码。

如果要打印__consumer_offsets的内容,请参见Kafka how to read from __consumer_offsets topic

【讨论】:

  • 非常感谢!当我使用您指示我执行的命令时,它给出了[console-consumer-63470,__consumer_offsets,13]::[OffsetMetadata[41371,NO_METADATA],CommitTime 1532889777047,ExpirationTime 1532976177047] ,但_consumer_offsets_13 是某个消费者组的分区,它包含它所涉及的所有 主题的偏移值。如何确定特定主题(my-topic)的最新偏移量是否也是__consumer_offset-13中“my-topic”的最新偏移量位置(因为我已经确定了这个分区)
  • 换句话说,我如何解码 payload 并获得 actual offset
  • 有什么建议可以解决上述问题吗?
  • 这是一个不同的问题,但检索已提交偏移量的最佳方法是使用kafka-consumer-groups.sh 工具。例如:kafka-consumer-groups.sh --bootstrap-server broker:9092 --describe --group my-group
  • 它不适用于我目前拥有的 spring-boot 客户端,官方记录的方式也没有帮助,我不得不停止 @SO。 :-) 因此,如果有任何其他方法可以帮助我获取存储在 consumer_offsets 中的消息的有效负载,那确实对我有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多