原始 kafka 实例关闭后,Kafka 消费者无法获取数据,直到它重新启动?

Kafka consumer doesn't get data after original kafka instance is down till it gets back on?


我正在使用 kafka 控制台工具并尝试设置它,如果至少一个 kafka 服务器实例保持在线,它仍然可以发送和接收消息,同时使用复制。

配置:Zookeeper (localhost:2181), kafka1 (localhost:9092), kafka2 (localhost:9093), producer1 (localhost:9092), producer2(localhost:9093), consumer1 (localhost:9092), consumer2 (本地主机:9093)

主题:分区=6,复制=2

如果kafka1服务器在线,无论kafka2的状态如何,发送和接收消息总是有效的。但是如果 kafka1 离线并且 kafka2 在线,发送的消息被提交 - 偏移量增加,但是在 kafka1 恢复在线之前它不能被任何 consumer1 和 consumer2 读取 - 在消息被传递之后。

在我看来,消息需要复制到 kafka1 才能传送。

那么,我的问题是:
1)为什么kafka1需要两个消费者都在线才能收到消息?
2)当kafka1离线时,producer1是否配置自己写入kafka2?
3) 如果 2) 为真,为什么 consumer1 不配置自己从 kafka2 读取?
4)当kafka1离线时,为什么消费者2收不到消息?

感谢您的任何回复:)

我想我明白了。我只将生产者设置为一个 kafka 实例,因此如果它处于离线状态,消息将缓存在 某个地方 。恢复在线后,消息已正常提交和传递。