首页 文章

Kafka不会检索脱机时发送的邮件

提问于
浏览
1

我在一台机器上设置了一个kafka集群,并使用kafka-console-producer.bat和kafka-console-producer.bat进行测试

我启动了zookeeper,kafka-server,并使用kakfa-console-producer生成一些测试消息,然后是kakfa-console-consumer,没有打印消息 .

但是,如果我启动zookeeper,kakfa-server,kakfa-console-consumer以及kakfa-console-producer并生成测试消息,则消息将打印在kakfa-console-consumer上 .

为什么Kafka在离线时无法接收消息?我只使用1个经纪人 .

1 回答

  • 4

    Kafka有一个名为消费者群体的概念,每个消费者在连接到经纪人时加入一个消费群体 . 对于每个消费者群体,Kafka会跟踪读取的最后一个消息偏移量 . 如果代理不知道某个使用者组,则名为auto.offset.reset的使用者参数会影响所发生的情况:

    • 最早:从主题的开头开始阅读消息

    • latest:从主题的当前末尾开始读取(因此消费者启动后会产生任何消息)

    此参数的默认值是最新的,并且由于控制台使用者随机化其使用者组,因此在您的情况下会发生这种情况,以及为什么在启动使用者之前看不到任何消息 . 您可以将参数--from-beginning添加到控制台使用者命令,该命令用于控制此工具的此行为 . 然后你应该看到所有消息 .

    Update: 如果您想确保自己选择消费者所在的位置,则需要手动设置消费者群组,并在每次呼叫消费者时保持相同 . 您可以通过使用此参数创建文本文件并将其传递给控制台使用者来完成此操作 .

    echo "group.id=test" > consumer.config
    ./kafka-console-consumer --topic test --new-consumer --bootstrap-server 127.0.0.1:9092 --consumer.config consumer.config
    

相关问题