以编程方式在 Spring Cloud Stream (RabbitMQ) 中声明绑定?
Programmatically declare bindings in Spring Cloud Stream (RabbitMQ)?
我有一个 Spring Cloud Stream 应用程序,它使用 RabbitMQ 绑定器来 使用 消息(它不产生任何消息)。 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.z.#
绑定交换 x
q2
与路由键 y.z.#
绑定交换 y
我想创建一个单个队列,它使用多个交换器和路由键。我知道我无法将交换绑定到 application.yaml
中的多个路由键(参见 SO 问题),因此我怀疑我无法配置 Spring Cloud Stream 以使用多个单个绑定的目的地(交换)。
所以我的问题是,我可以通过编程方式声明一个 binding
从多个交换中消费吗?如果这样做,是否需要在 application.yaml
文件中保留任何内容?
我该怎么办?
您可以使用交换到交换绑定来满足此要求。
x -> z
y -> z
然后从与 #
绑定的 z 上的单个队列中消费。
您可以在您的引导应用程序中将交换定义为交换绑定,如@Bean
s.
我有一个 Spring Cloud Stream 应用程序,它使用 RabbitMQ 绑定器来 使用 消息(它不产生任何消息)。 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.z.#
绑定交换 q2
与路由键y.z.#
绑定交换
x
y
我想创建一个单个队列,它使用多个交换器和路由键。我知道我无法将交换绑定到 application.yaml
中的多个路由键(参见
所以我的问题是,我可以通过编程方式声明一个 binding
从多个交换中消费吗?如果这样做,是否需要在 application.yaml
文件中保留任何内容?
我该怎么办?
您可以使用交换到交换绑定来满足此要求。
x -> z
y -> z
然后从与 #
绑定的 z 上的单个队列中消费。
您可以在您的引导应用程序中将交换定义为交换绑定,如@Bean
s.