1

我编写了一个 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 我已将应用程序部署到 Cloud Foundry (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.

你能帮忙吗

4

1 回答 1

0

这是您需要做的参考: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 客户端,并提供在添加新实例时自动(重新)分区的能力。

于 2016-05-10T23:10:59.533 回答