我正在使用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不接收消息?
感谢您的回复:)
答案 0 :(得分:0)
我想我明白了。我让生产者只设置了一个kafka实例,所以如果它是离线的,那么消息会被缓存在某个地方。在它重新上线后,消息被提交并正常发送。