在 Camel-Kafka 中创建并发 Kafka 消费者

Create concurrent Kafka consumers in Camel-Kafka

我正在使用 camel-kafka 版本 2.14.3。 下面是 kafka URI :

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

请注意,我在 URI 选项中使用了 consumerStream=2。但是当我一次向主题 topic-name 发布多条消息(全部到同一个分区)时,kafka 消费者会顺序接收这些消息。如何并行接收这些消息?

我正在寻找如下解决方案:

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

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

分区是Kafka的并行单位。每个分区将分配给给定消费者组中的单个消费者。你说你正在生产一个分区。这意味着所有消息都将发送给单个消费者,无论您在组中有多少消费者。如果你想让消息到达不同的消费者,你需要生产到不同的分区。

如果你有 N 个分区,那么在同一个消费者组中你最多可以有 N 个消费者,每个消费者都从一个分区读取数据。当您的消费者数量少于分区数量时,一些消费者将从多个分区读取数据。此外,如果您的消费者多于分区,那么一些消费者将处于非活动状态并且根本不会收到任何消息。

如果您每个分区有一个消费者,那么一些分区可能会收到更多消息,这就是为什么您的一些消费者可能空闲而另一些可能仍在处理一些消息的原因。请注意,消息并不总是以循环方式插入主题分区,因为具有相同键的消息被放入同一分区。