我已经在机器上设置了一个kafka集群,并使用kafka-console-producer.bat和kafka-console-producer.bat进行了测试
我启动了zookeeper,kafka服务器,并使用kakfa-console-producer生成了一些测试消息,然后是kakfa-console-consumer,未打印任何消息。
但是,如果我启动Zookeeper,kakfa服务器,kakfa控制台消费者,最后启动kakfa控制台生产者并生成测试消息,则这些消息会打印在kakfa控制台消费者上。
为什么卡夫卡离线时无法提取消息?我只使用1个经纪人。
卡夫卡(Kafka)有一个称为“消费群体”的概念,每个与经纪人建立联系的消费者都加入其中。对于每个消费者群体,Kafka都会跟踪上一次读取的消息偏移量。如果代理不知道使用者组,则称为auto.offset.reset的使用者参数会影响发生的情况:
该参数的默认值为最新,并且由于控制台使用者将其使用者组随机化,因此这就是您的情况,也是为什么在使用者启动之前看不到任何消息的原因。您可以将参数--from-beginning添加到控制台使用者命令,该命令用于控制此工具的行为。然后,您应该看到所有消息。
更新: 如果要确保在消费者离开的地方接机,则需要手动设置消费者组,并在每次致电消费者时保持相同。您可以通过使用此参数创建文本文件并将其传递给控制台使用者来实现。
echo "group.id=test" > consumer.config
./kafka-console-consumer --topic test --new-consumer --bootstrap-server 127.0.0.1:9092 --consumer.config consumer.config
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |