Spring boot 在SpringCloudStream(RabbitMQ)中以编程方式声明绑定?
我有一个SpringCloudStream应用程序,它使用RabbitMQ绑定器来使用消息(它不会产生任何消息)。Spring boot 在SpringCloudStream(RabbitMQ)中以编程方式声明绑定?,spring-boot,rabbitmq,spring-amqp,spring-cloud-stream,spring-rabbit,Spring Boot,Rabbitmq,Spring Amqp,Spring Cloud Stream,Spring Rabbit,我有一个SpringCloudStream应用程序,它使用RabbitMQ绑定器来使用消息(它不会产生任何消息)。application.yaml文件如下所示: spring: cloud: stream: rabbit: bindings: x: consumer: bindingRoutingKey: x.z.# queueNameGroupOnly:
application.yaml
文件如下所示:
spring:
cloud:
stream:
rabbit:
bindings:
x:
consumer:
bindingRoutingKey: x.z.#
queueNameGroupOnly: true
y:
consumer:
bindingRoutingKey: y.z.#
queueNameGroupOnly: true
bindings:
x:
binder: rabbit
group: q1
destination: x
y:
binder: rabbit
group: q2
destination: y
这将在RabbitMQ中创建两个队列:
q1
绑定到交换x
的路由键x.z.
q2
绑定到使用路由键y.z.
application.yaml
中的多个路由密钥(请参见问题),因此我怀疑我无法将Spring Cloud Stream配置为使用多个目的地(交换)进行单个绑定
所以我的问题是,我能否以编程方式声明一个绑定
使用多个交换?如果执行此操作,是否需要在应用程序.yaml
文件中保留任何内容
我应该怎么做?您可以使用exchange到exchange绑定来满足此要求
x -> z
y -> z
然后从z上绑定了#
的单个队列中消费
您可以将启动应用程序中的exchange到exchange绑定定义为@Bean
s