我正在尝试将一个小型 Spring Cloud Stream 应用程序连接到两个不同的 RabbitMQ 系统。 对于这两个系统,我想将流输入绑定到现有交换,指定路由键。 Spring Cloud Stream 可以为我管理一个匿名队列来路由消息。 但是,我尝试指定的路由键被忽略了。
当连接到单个系统时,这会按预期工作,创建一个匿名队列并使用我指定的路由键绑定到现有交换。 但是一旦我尝试连接到两个系统(根据文档),路由键就会被忽略:匿名队列被创建并绑定到交换,但路由键只是'#'。
这是我的
application.yaml
文件:
spring:
cloud:
stream:
bindings:
function1-in-0:
binder: rabbit1
destination: existing-exchange
function2-in-0:
binder: rabbit2
destination: existing-exchange
binders:
rabbit1:
type: rabbit
default-candidate: false
inherit-environment: false
environment:
spring:
rabbitmq:
host: host1
username: ...
password: ...
virtual-host: ...
rabbit2:
type: rabbit
default-candidate: false
inherit-environment: false
environment:
spring:
rabbitmq:
host: host2
username: ...
password: ...
virtual-host: .
rabbit:
bindings:
function1-in-0:
consumer:
binding-routing-key: routing.key.1
declare-exchange: false
function2-in-0:
consumer:
binding-routing-key: routing.key.2
declare-exchange: false
function:
definition: function1;function2
我可能忽略了一些明显的东西,但我没有找到关于在使用多个系统时自定义 RabbitConsumerProperties 的文档。