【问题标题】:Group property not work in spring stream cloud?组属性在春流云中不起作用?
【发布时间】:2020-04-16 02:05:33
【问题描述】:

我使用 Spring Stream Cloud 在 Kafka 上消费消息。 当在 kafka 上产生消息时,所有消费者都命中了。

但是 kafka 的文档说通过使用 group 只有一个消费者消费消息。

这是我的消费者代码。

@EnableBinding(Sink.class)

public class Consumer2 {


    @StreamListener(target = Sink.INPUT)
    public void consume(String message) {
        System.out.println("33333");

    }

    @StreamListener(target = Sink.INPUT)
    public void consume1(String message) {
        System.out.println("444444");

    }


}
}

这是我的配置 但我的两种方法都称为:(

spring:
  cloud:
    stream:
      default-binder: kafka
      kafka:
        binder:
          brokers:
            - localhost:9092
      bindings:
        input:
          binder: kafka
          destination: abbas
          content-type: text/plain
          group: input-group-1

        output:
          binder: kafka
          destination: abbas
          group: output-group-1
          content-type: text/plain

【问题讨论】:

    标签: java spring-boot apache-kafka spring-cloud spring-cloud-stream


    【解决方案1】:

    使用该配置,您只有 1 个消费者 (SINK.INPUT),而不是 2 个消费者(@StreamListener 不是消费者,它是处理入站消息的模型)

    这就是为什么 spring 将入站消息路由到使用相同接收器的两个 @StreamListener 注释。

    【讨论】:

      【解决方案2】:

      在一个实例组中没有影响。

      当我们的应用程序运行多个实例时,每次输入通道中有新消息时,都会通知所有订阅者。

      大多数时候,我们只需要处理一次消息。 Spring Cloud Stream 通过消费者组实现此行为。

      要启用此行为,每个消费者绑定都可以使用 spring.cloud.stream.bindings..group 属性来指定组名:

      https://www.baeldung.com/spring-cloud-stream 第 5.4 节

      【讨论】:

        猜你喜欢
        • 2019-07-18
        • 2015-08-02
        • 2021-09-08
        • 2023-01-21
        • 1970-01-01
        • 2017-12-09
        • 2022-10-05
        • 1970-01-01
        • 2018-11-29
        相关资源
        最近更新 更多