Kafka消费者在原始kafka实例关闭之后才获得数据,直到它重新开始?

时间:2017-02-28 10:51:07

标签: apache-kafka persistence


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

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

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

如果kafka1服务器在线,无论kafka2状态如何,发送和接收消息始终有效。但是如果kafka1处于脱机状态且kafka2处于联机状态,则会发送已发送的消息 - 偏移量增加,但消费者1和消费者2中的任何消息都无法读取,直到kafka1重新联机 - 消息传递完成后。

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

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

感谢您的回复:)

1 个答案:

答案 0 :(得分:0)

我想我明白了。我让生产者只设置了一个kafka实例,所以如果它是离线的,那么消息会被缓存在某个地方。在它重新上线后,消息被提交并正常发送。