我使用的是camel-kafka版本2.14.3
。以下是卡夫卡URI:
<from uri="kafka:{brokerlist}?topic={topic-name}&zookeeperHost={zookeeperHost}&zookeeperPort={zookeeperPort}&groupId={groupId-name}&consumerStreams=2" />
注意,我在URI选项中使用了consumerStream=2
。但是,当我一次向主题topic-name
发布多条消息(全部发布到同一分区(时,kafka使用者会依次接收这些消息。如何并行接收这些消息?
我正在寻找一个如下的解决方案:
<from uri="ibm_bean_name:queue_name?concurrentConsumers=2" />
是我用来同时从ibm MQ 读取的
分区是Kafka的并行单元。每个分区将被分配给给定使用者组中的单个使用者。你说你正在生产一个单独的分区。这意味着所有消息都将发送给一个消费者,而不管组中有多少消费者。如果您希望消息发送到不同的消费者,则需要生成到不同的分区。
如果您有N个分区,那么在同一消费者组中最多可以有N个消费者,每个消费者都从一个分区中读取。当使用者少于分区时,一些使用者将从多个分区中读取。此外,如果使用者比分区多,那么一些使用者将处于非活动状态,并且根本不会收到任何消息。
如果每个分区有一个使用者,那么一些分区可能会接收到更多的消息,这就是为什么一些使用者可能空闲,而另一些使用者可能仍在处理一些消息。请注意,消息并不总是以循环方式插入主题分区,因为具有相同键的消息被放置在同一分区中。