我正在使用kafka控制台工具,并尝试设置它,如果至少有一个kafka服务器示例保持在线,则仍然可以在使用复制的同时发送和接收消息。
配置:zookeeper(localhost:2181),Kafka1(localhost:9092),Kafka2(localhost:9093),生产商1(localhost:9092),生产商2(localhost:9093),消费者1(localhost:9092),消费者2(localhost:9093)
主题:分区=6,复制=2
如果kafka1服务器处于联机状态,则无论kafka2的状态如何,发送和接收消息始终有效。但是,如果kafka1离线,kafka2在线,则在发送消息之后,发送的消息将被提交-偏移量增加,但在kafka1恢复在线之前,consumer1和consumer2中的任何一个都无法读取它。
在我看来,信息需要复制到Kafka1才能传递。
所以,我的问题是:
1) 为什么Kafka1需要在线才能让两个消费者都能收到信息?
2) producer1是否将自己配置为在kafka1脱机时写入kafka2?
3) 如果2)是真的,那么为什么consumer1不将自己配置为从kafka2读取呢?
4) Kafka1离线时,为什么消费者2没有收到消息?
感谢您的回复:)
1条答案
按热度按时间rjzwgtxy1#
我想我知道了。我只将producers设置为一个kafka示例,所以如果它处于脱机状态,消息会缓存在某个地方。当它恢复在线后,消息被提交并正常传递。