簡體   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