如何在 spring 云流 SQS 绑定器中将多个消费者配置到单个目标队列
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云流配置:
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
但是使用上面的配置,两个消费者都不工作。如果我删除任何一个消费者,另一个正在工作。
我怎样才能配置云流,使两个消费者都将根据生成的事件负载工作。
当你有多个功能时,你需要告诉框架需要激活哪些。当应用程序中只有一个功能时,Spring Cloud Stream 将只激活该功能。这就是当您删除一个消费者时它起作用的原因。您可以使用以下配置来激活两个消费者。
spring.cloud.function.definition: testEvent1;testEvent2
我的应用程序正在接收两个具有不同负载的事件。所以我为每个事件写了两个不同的消费者。
消费者 1:
@Bean
public Consumer<TestEvent1> testEvent1() {
// my consumer logic
}
消费者 2:
@Bean
public Consumer<TestEvent2> testEvent2() {
// my consumer logic
}
以下是spring云流配置:
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
但是使用上面的配置,两个消费者都不工作。如果我删除任何一个消费者,另一个正在工作。
我怎样才能配置云流,使两个消费者都将根据生成的事件负载工作。
当你有多个功能时,你需要告诉框架需要激活哪些。当应用程序中只有一个功能时,Spring Cloud Stream 将只激活该功能。这就是当您删除一个消费者时它起作用的原因。您可以使用以下配置来激活两个消费者。
spring.cloud.function.definition: testEvent1;testEvent2