繁体   English   中英

@StreamListener 为 kafka 定义 groupId-如何为同一主题设置多个消费者

[英]@StreamListener define groupId for kafka- How can I set many consumers for the same topic

我在我的应用程序中使用 java 和 springboot 和 Kafka。

我想在 Kafka 中为同一主题定义许多消费者。 现在,我在我的应用程序属性文件中定义组 ID:

spring.cloud.stream.bindings.myFirstTopic.destination=my-first-topic
spring.cloud.stream.bindings.myFirstTopic.group=my-first-consumer

在我使用注释的方法上:

@StreamListener(MyFirstTopicBinding.MY_FIRST_TOPIC)
    public void firstConsumer(@Payload MessageDto dto) {}

@StreamListener(MyFirstTopicBinding.MY_FIRST_TOPIC)
    public void secondConsumer(@Payload MessageDto dto) {}

我希望这两种方法都能得到相同的消息....

我该怎么做?

你不能这样做; 你需要给每个人一个不同的频道名称,然后

spring.cloud.stream.bindings.myFirstConsumer.destination=my-first-topic
spring.cloud.stream.bindings.myFirstConsumer.group=my-first-consumer
spring.cloud.stream.bindings.mySecondConsumer.destination=my-first-topic
spring.cloud.stream.bindings.mySecondConsumer.group=my-second-consumer

此外, @StreamListener已被弃用,很快将被删除; 您应该转换为功能 model。

@Bean
Consumer<MessageDto> myFirstConsumer() {
    return dto -> {...};
}
@Bean
Consumer<MessageDto> mySecondConsumer() {
    return dto -> {...};
}

然后

spring.cloud.function.definition=myFirstConsumer;mySecondConsumer
spring.cloud.stream.bindings.myFirstConsumer-in-0.destination=my-first-topic
spring.cloud.stream.bindings.myFirstConsumer-in-0.group=my-first-consumer
spring.cloud.stream.bindings.mySecondConsumer-in-0.destination=my-first-topic
spring.cloud.stream.bindings.mySecondConsumer-in-0.group=my-first-consumer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM