在camel kafka中创建并发kafka消费者

z8dt9xmd  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(442)

我用的是Kafka版本 2.14.3 . 以下是Kafkauri:

<from uri="kafka:{brokerlist}?topic={topic-name}&amp;zookeeperHost={zookeeperHost}&amp;zookeeperPort={zookeeperPort}&amp;groupId={groupId-name}&amp;consumerStreams=2" />

请注意,我使用了 consumerStream=2 在uri选项中。但是当我发布多条消息到主题时 topic-name 一次(全部到同一分区),kafka使用者按顺序接收这些消息。如何并行地接收这些消息?
我正在寻找一个如下的解决方案:

<from uri="ibm_bean_name:queue_name?concurrentConsumers=2" />

是我用来从IBMMQ并发读取的内容

o75abkj4

o75abkj41#

如果有n个分区,那么在同一个使用者组中最多可以有n个使用者,每个使用者都从单个分区读取数据。当使用者少于分区时,一些使用者将从多个分区读取数据。另外,如果使用者比分区多,则某些使用者将处于非活动状态,并且根本不会收到任何消息。
如果每个分区有一个使用者,那么某些分区可能会接收更多消息,这就是为什么有些使用者可能处于空闲状态,而有些使用者可能仍在处理某些消息。注意,消息并不总是以循环方式插入主题分区,因为具有相同密钥的消息被放置在同一分区中。

polkgigr

polkgigr2#

分区是Kafka的平行单位。每个分区将分配给给定使用者组中的单个使用者。你说你要生产一个分区。这意味着所有消息都将发送给单个消费者,而不管您在组中有多少消费者。如果希望消息传递给不同的使用者,则需要生成不同的分区。

相关问题