【问题标题】:Kafka: How to Display OffsetsKafka:如何显示偏移量
【发布时间】:2021-06-28 17:02:55
【问题描述】:

我对 Kafka 非常陌生。我已经在我的 Mac 上使用自制软件安装了 kafka 和 zookeeper,我正在玩 the quickstart guide

我已经能够使用以下命令和 STDIN 将消息推送到 Kafka

kafka-console-producer --broker-list localhost:9092 --topic test

我可以使用

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning

我不清楚我如何使用偏移量。我的理解是,添加到主题的每条消息都会有一个数字的增量偏移值。但是,如果我尝试做这样的事情

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --offset 1

我得到一个非零状态码并且没有显示任何消息(除了通常的帮助/使用信息)

我也无法使用 latestearliest 关键字

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --offset earliest
kafka-console-consumer --bootstrap-server localhost:9092 --topic test --offset latest

以上两个都返回非零状态码。

我是否从根本上误解了偏移量?如果没有,有没有办法列出所有消息它们的偏移量?最后——kafka-console-consumer--offset 标志的最简单示例是什么?

【问题讨论】:

  • 嘿,在查看控制台使用者的源代码后,似乎没有选项可以根据需要将偏移量设置为某个值(您可以通过使用 seek api 调用对实际使用者执行此操作) . latest 是默认值(也就是说,如果您在没有 --from-beginning 的情况下启动控制台使用者,它将只接收“新”数据)。 --from-beginning 与“最早”相同。您可以使用 group 选项,它允许您重复使用相同的 group id,保证消费者连续运行不会收到重复的消息。
  • 谢谢@RoyShahaf,这非常有用(尤其是组信息)——如果你有时间,随机跟进问题:“查看控制台消费者的源代码”——你在哪里看的这个的源代码?
  • 很高兴能帮上忙。关于你的后续问题:我用谷歌搜索了 kafka-console-consumer.sh,它引导我到一些 github,其中包含一些名为 kafka-console-consumer.sh 的文件,该文件似乎正在运行 ConsoleConsumer,所以我用谷歌搜索并找到了一些看起来相关的东西:)

标签: apache-kafka kafka-consumer-api


【解决方案1】:

如果你在给出偏移值后查看输出,它会说你需要指定一个分区(在帮助部分的顶部)

主题被细分为多个分区,偏移量 1 只能存在于可能数百个分区中的一个分区上,因此您必须指定它

关于显示偏移量,查找GetOffsetShell 命令语法

【讨论】:

  • 啊哈,谢谢,超级有用!每当出现错误时,我都会被“让我们输出所有帮助”的行为分心。以后我会努力 RTFE :)
  • 是的,错误输出应该在底部 :) 随意接受答案
【解决方案2】:

由于GetOffsetShell只有works withPLAINTEXT,对很多人来说可能会很不方便。
好消息是,基于9099 PR 中的通信,包括print.offset 在内的其他属性似乎已进入2.7。
现在应该可以使用print.offset=true了!

【讨论】:

【解决方案3】:

一个很好的命令行工具,可以显示每条消息的偏移量是kafkacat

kafkacat -b localhost:9092 -C -t test -f 'Topic %t [%p] at offset %o: key %k: %s\n'

它会打印出类似的东西

Topic test [5] at offset 111: key "0171bf8102007900e33": {"Message": "1"} 
Topic test [2] at offset 123: key "070021b0f001f614c1b": {"Message": "2"}

【讨论】:

    【解决方案4】:

    使用偏移时需要分区

    .\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --partition 0 --offset 0 --property print.key=true --property print.timestamp=true
    

    【讨论】:

      【解决方案5】:

      你必须在上面的命令中给出分区值以及偏移量

      kafka-console-consumer --bootstrap-server localhost:9092 --topic test --partition 0 --offset 1

      【讨论】:

        猜你喜欢
        • 2021-03-27
        • 2018-01-22
        • 1970-01-01
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多