首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka如何将消息分发给多个消费者

Kafka如何将消息分发给多个消费者
EN

Stack Overflow用户
提问于 2015-09-16 16:14:53
回答 1查看 392关注 0票数 0

我正在测试Kafka如何使用高级Java APIS在多个消费者上工作。

创建了1个主题,包含5个分区、1个生产者和2个消费者(C1C2)。每个使用者将只有一个线程,并且partition.assignment.strategy设置为range

C1启动时,它会声明所有分区。然后C2启动,ZK将触发重新平衡。之后,C1将声明(0, 1, 2)C2将声明(3, 4)。它工作得很好,直到现在。

然后我检查了C1收到的消息,我希望消息只是来自分区(0, 1, 2)。但在我的日志文件中,我可以找到来自所有分区的消息,这也发生在C2中。它就像设置为roundrobin partition.assignment.strategy一样。这就是卡夫卡发送消息的方式。或者那一定是弄错了?

EN

回答 1

Stack Overflow用户

发布于 2015-09-16 21:31:55

首先,为了纠正您的方法,对于一个主题,拥有与分区相同的使用者数量总是更好的。通过这种方式,每个消费者将只声明一个分区,并且只坚持该分区,您将准确地从该分区获得数据,并且以有序的方式,而不是从其他分区。

现在来回答您的问题,为什么您要从两个消费者中的几乎所有分区获取数据,因为与分区相比,您有更少的消费者,在本例中,每个消费者线程都将尝试访问分区。

还有一种理论认为,如果与每个主题的分区数量相比,消费者的数量更多,那么一些消费者可能永远不会获得任何数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32603126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档