我用的是Kafka版本 2.14.3
. 以下是Kafkauri:
<from uri="kafka:{brokerlist}?topic={topic-name}&zookeeperHost={zookeeperHost}&zookeeperPort={zookeeperPort}&groupId={groupId-name}&consumerStreams=2" />
请注意,我使用了 consumerStream=2
在uri选项中。但是当我发布多条消息到主题时 topic-name
一次(全部到同一分区),kafka使用者按顺序接收这些消息。如何并行地接收这些消息?
我正在寻找一个如下的解决方案:
<from uri="ibm_bean_name:queue_name?concurrentConsumers=2" />
是我用来从IBMMQ并发读取的内容
2条答案
按热度按时间o75abkj41#
如果有n个分区,那么在同一个使用者组中最多可以有n个使用者,每个使用者都从单个分区读取数据。当使用者少于分区时,一些使用者将从多个分区读取数据。另外,如果使用者比分区多,则某些使用者将处于非活动状态,并且根本不会收到任何消息。
如果每个分区有一个使用者,那么某些分区可能会接收更多消息,这就是为什么有些使用者可能处于空闲状态,而有些使用者可能仍在处理某些消息。注意,消息并不总是以循环方式插入主题分区,因为具有相同密钥的消息被放置在同一分区中。
polkgigr2#
分区是Kafka的平行单位。每个分区将分配给给定使用者组中的单个使用者。你说你要生产一个分区。这意味着所有消息都将发送给单个消费者,而不管您在组中有多少消费者。如果希望消息传递给不同的使用者,则需要生成不同的分区。