来自消费者组的所有消费者都收到消息

All the consumers from consumer group receive message

我编写了一个 spring 云流应用程序来接收来自 Kafka 主题的消息。 我正在尝试设置消费者组,这样当我扩展我的应用程序时,只有一个应用程序实例会收到来自 Kafka 主题的消息。

以下是我的application.yml spring: cloud: stream: bindings: orderTopic: group: orderGroup destination: orderTopic kafka: binder: brokers: 192.168.61.21 defaultBrokerPort: 9092 zkNodes: 192.168.61.21 defaultZkPort: 2181 我已将该应用程序部署到云铸造厂 (pcfdev) 并将该应用程序的实例计数设置为 2。当我向 orderTopic 主题发送订单时,我预计只有 2 个应用程序实例中的一个会收到订单,但是,这两个应用程序实例收到相同的顺序如下所示 2016-05-10T16:33:46.42-0600 [APP/0] OUT Order Number 23 received. 2016-05-10T16:33:47.42-0600 [APP/1] OUT Order Number 24 received. 2016-05-10T16:33:47.42-0600 [APP/0] OUT Order Number 24 received. 2016-05-10T16:33:48.42-0600 [APP/1] OUT Order Number 25 received. 2016-05-10T16:33:48.42-0600 [APP/0] OUT Order Number 25 received. 2016-05-10T16:33:49.43-0600 [APP/1] OUT Order Number 26 received. 2016-05-10T16:33:49.43-0600 [APP/0] OUT Order Number 26 received.

你能帮忙吗

这是您需要执行的操作的参考:http://docs.spring.io/spring-cloud-stream/docs/current-SNAPSHOT/reference/htmlsingle/#_instance_index_and_instance_count

Kafka binder 需要该信息才能将分区正确分配给实例。

作为 Spring Cloud Stream 1.1.0.M1 工作的一部分,我们将升级到 0.9 Kafka 客户端,并提供在添加新实例时自动(重新)分区的能力。