繁体   English   中英

spring cloud stream SQS binder中如何配置多个消费者到一个目标队列

[英]How to configure multiple consumers to a single destination queue in spring cloud stream SQS binder

我的应用程序正在接收两个具有不同负载的事件。 所以我为每个事件写了两个不同的消费者。

消费者1:

@Bean
public Consumer<TestEvent1> testEvent1() {
  // my consumer logic
}

消费者2:

@Bean
public Consumer<TestEvent2> testEvent2() {
  // my consumer logic
}

以下是spring云stream的配置:

spring:
  cloud:
    stream:
      sqs:
        bindings:
          testEvent1-in-0:
            consumer:
              snsFanout: true
              messageDeletionPolicy: ON_SUCCESS
              waitTimeout: 20
              maxNumberOfMessages: 10
              visibilityTimeout: 30
          testEvent2-in-0:
            consumer:
              snsFanout: true
              messageDeletionPolicy: ON_SUCCESS
              waitTimeout: 20
              maxNumberOfMessages: 10
              visibilityTimeout: 30
      bindings:
        testEvent1-in-0:
          destination: events-queue
        testEvent2-in-0:
          destination: events-queue
      default-binder: sqs

但是使用上述配置,两个消费者都无法正常工作。 如果我删除任何一个消费者,另一个正在工作。

我怎样才能配置云 stream 以便两个消费者都将根据生成的事件有效负载工作。

当你有多个功能时,你需要告诉框架哪些需要被激活。 当应用程序中只有一个 function 时,Spring 云 Stream 将简单地激活那个。 这就是当您删除一个消费者时它起作用的原因。 您可以使用以下配置来激活两个消费者。

spring.cloud.function.definition: testEvent1;testEvent2

暂无
暂无

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

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