2

我正在使用骆驼卡夫卡版本2.14.3。以下是卡夫卡 URI:

<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" /> 

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

4

2 回答 2

1

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

于 2020-04-21T09:16:03.353 回答
1

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

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

于 2020-04-21T10:09:41.190 回答