问题描述
我已经配置了三个Zookeeper节点集群,其中两个代理连接到Zookeeper集群。
我创建了topic,以在发送消息时进行测试用例的故障转移或丢失。
基于消费者组的示例,我运行了两个消费者shell来消费消息
我已经逐行发送了一个文本文件数据。.产生消息。
在最终测试用例中,我已关闭了所有Zookeeper节点和一个代理。
我仍然只能通过一个经纪人生成和使用全部消息。怎么可能?
这是我的体系结构Kafka Architecture
解决方法
此article解释了Zookeeper在卡夫卡中的作用。
回答您的问题。客户端将一直工作到下一次刷新元数据为止。客户端会获取其连接的主题的元数据(如果分区和其领导者不可用的话)。现在,一旦有了这些,就可以直接与这些代理连接,并生成/使用消息,除非领导者发生变化,并且直到下一次刷新元数据为止。元数据刷新是定期操作。
metadata.max.age.ms
以毫秒为单位的时间段,在此之后我们强制刷新元数据,即使我们没有看到任何分区领导更改也可以主动发现任何新的代理或分区。