已使用命令行

时间:2019-10-15 13:25:04

标签: apache-kafka

首先,请注意,不能选择使用Java Consumer API。为什么它不是我无法透露的选项,但我必须能够使用shell命令执行以下操作。

我有一个主题,我已经写了一条消息,并且可以通过使用./kafka-console-consumer.sh选项运行--from-beginning来确认是否是这种情况,但是由于这会启动使用者,因此该命令将卡住,需要使用SIGINT进行手动干预。我已经接近使用--timeout-ms了,但是这并不理想,因为除非我选择一个很高的值,否则数据转储可能会变得不可靠。
我想以一种可以被grepped的方式转储console-consumer的输出,

1 个答案:

答案 0 :(得分:2)

当您写给Kafka时,您可以设置in the producer acks,这是您希望从代理那里保证本地代理和/或所有副本已接收并写入消息的级别。 。

如果使用此选项,则无需尝试使用该主题来确定记录是否已写入。听起来很难尝试去做。

如果您绝对必须使用命令行工具来执行此操作(这不是一个好主意),请使用kafkacat,它可以从任何偏移量消耗任意数量的消息,例如:

  • 从开头(-C)开始消耗(-c 5)五个消息(-o beginning),或者在到达分区末尾时退出(-e)< / p>

    kafkacat -b localhost:9092 -t mytopic -o beginning -e -C -c 5
    
  • 从结尾(-C)开始消耗(-c 10)十个消息(-o -10),或者在到达分区末尾时退出(-e)< / p>

    kafkacat -b localhost:9092 -t mytopic -o -10 -e -C -c 10
    
  • 在偏移量42(-C)上消耗(-c 1)一个消息(-o 42),或者在到达分区末尾时退出(-e)< / p>

    kafkacat -b localhost:9092 -t mytopic -o 42 -e -C -c 1