我注意到我的系统有些奇怪。所以,我使用Kafka在不同的系统之间发送和接收消息。我有大约6或7个主题,每个主题有10个分区。我有一个外部系统在我的Kafka主题上发送消息。所以这个外部系统最初会发送消息到一个主题,例如“XYZ”,并等待来自服务器的响应。一旦服务器读取并响应外部系统,则只有它将继续。
现在在我们的场景中,当外部系统向主题“XYZ”发送消息时,它总是在6号分区上发送。即使在多次重新启动整个系统之后,也会发生这种情况。XYZ主题上的消息总是被发送到6号分区。
现在,在服务器端,我使用kafka-node创建客户端、消费者和生产者来消费和生产发送给kafka的消息,但在本例中,它不是从主题“XYZ”消费的。
作为一种变通方法,我尝试通过删除主题并再次创建它们来测试一切,但只使用单个分区,这一次运行良好。整个系统运行没有任何问题。
1条答案
按热度按时间hpcdzsge1#
然后再次创建它们,但只使用单个分区,这一次运行良好
不清楚这个场景在测试什么...如果你想要1个分区,那么为什么主题要用10个分区来创建呢?
从理论上讲,发生这种情况的唯一原因是,如果您关闭并重新创建生产者示例,而它没有正确地随机播种发送事件的循环分配,并且总是选择相同的值;或者,您为记录定义了一个键,并且它总是散列到分区6。
在这种情况下,它不是从主题“XYZ”消费的。
在任何分区上一次只能有一个消费者处于活动状态。如果所有数据最终都在分区6中,那么你只能有一个消费者...所以,听起来像是 * 某个 * 正在阅读它,只是不是你所期望的。