【问题标题】:Get last message from kafka consumer console script从 kafka 消费者控制台脚本获取最后一条消息
【发布时间】:2016-01-15 05:31:10
【问题描述】:

我们可以通过以下方式从 Kafka 获取每条消息:

 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

有没有办法只获取最后一条消息

编辑:

如果你只是想在你的流中监控一些消息(--max-messages 10),一个方便的命令是:

watch -n5 "./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic auction --max-messages 10"

【问题讨论】:

  • bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning --timeout-ms 10 | tail -n 1 怎么样(超时毫秒会在读取所有内容后杀死消费者)
  • 数据量大时增加超时值
  • @natetitterton 您的回答是“让所有项目脱离主题”显示第一个。效率不高

标签: apache-kafka kafka-consumer-api


【解决方案1】:

使用KafkaCat偏移参数-o可以指定负值:

kcat -b localhost:9092 -t mytopic -o -1

对最后 5 条消息等使用 -o -5

【讨论】:

    【解决方案2】:

    使用 KafkaCat (https://docs.confluent.io/platform/current/app-development/kafkacat-usage.html) 可以读取 Apache Kafka 主题的最后 N 条消息。

    【讨论】:

    • 获取最新消息的命令是什么? Kafkacat 仅随机显示消息,但不显示最新消息。
    【解决方案3】:

    我不知道有任何自动化,但使用这种简单的两步方法,它应该可以工作。 请注意,在我的情况下,它是一个分区主题,如果您有一个未分区的主题,您可以保留它的参数:

    1) 获取主题的最大偏移量(+ 他们的分区):

    bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic mytopic
    
    mytopic:2:11
    mytopic:1:7
    mytopic:0:15
    mytopic:3:8
    

    2)选择一个主题(+分区)并提供offset - n作为参数:

    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytopic --offset 10 --partition 0  
    

    主题的最后 n 条消息将被打印到控制台。 在我的示例中,它将显示 5 条消息 (= 15-10)。

    【讨论】:

    • 需要注意的是,这种方法在一般情况下是不可靠的,因为不是每个偏移量都必然包含一个消息。可能存在间隙,例如在压缩日志或中止事务的情况下。
    • 我们还可以使用客户端安装在您的计算机上以获取更多信息:conduktor.io(感谢 Stephane Maarek 和 Stéphane Derosiaux)
    • 这里为什么不指定消费者ID? AFAIK 偏移量应该是特定于消费者群体的,不是吗?
    • @BorisMitioglov:偏移量是特定于分区的。
    【解决方案4】:

    我从一些谷歌搜索http://grokbase.com/t/kafka/users/145x930s27/how-to-get-last-message得到了可能正确的答案

    有人建议使用 getOffsetBefore api 找到最后一个偏移量,然后 使用该偏移量 - 1 来获取。

    【讨论】:

    • 链接无效
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 2016-12-23
    • 2018-07-01
    • 1970-01-01
    • 2020-07-14
    • 2018-12-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多