2016-05-10 148 views
1

我写了一个春季云流应用程序来接收来自卡夫卡主题的消息。 我正在尝试设置使用者组,以便在扩展我的应用程序时,只有其中一个应用程序实例接收来自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.

你能帮帮

回答

0

下面是你需要做一个参考:http://docs.spring.io/spring-cloud-stream/docs/current-SNAPSHOT/reference/htmlsingle/#_instance_index_and_instance_count

Kafka联编程序需要这些信息才能将分区正确地分配给实例。

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

+1

这实际上是否已解决?当前的Spring Cloud Stream文档[链接](https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/_configuration_options.html#_spring_cloud_stream_properties)仍然声明必须设置instanceCount和instanceIndex。我对卡夫卡的理解是,它不强加这一要求,而是动态地将主题分区重新分配给组中的任何数量的当前连接的消费者。 –

相关问题