我们有一些服务,它们共享基本的通用配置以连接到不同的外部系统(DB,Rabbitmq等)和通用设置。
我们对rabbitmq拥有的变量之一是带有主集群的spring.rabbitmq.addresses,当我们要从服务连接到另一个集群时,该集群将被覆盖,但是我们仅连接到其中一个。 我们正在尝试修改一项服务以连接到2个不同的群集,但始终以spring.rabbitmq.addresses中的值为准。
我们尝试使用类似以下内容的文档(https://cloud.spring.io/spring-cloud-static/spring-cloud.html#multiple-systems):
spring.rabbitmq.addresses: host-rabbitmq2:5672
spring.cloud.stream:
binders:
rabbitInput:
defaultCandidate: false
type: rabbit
environment.spring.rabbitmq.host: host-rabbitmq1:5672
rabbitOutput:
defaultCandidate: false
type: rabbit
environment.spring.rabbitmq.host: host-rabbitmq1:5672
rabbitMainClusterInput:
defaultCandidate: false
type: rabbit
environment.spring.rabbitmq.host: host-rabbitmq2:5672
但是始终使用spring.rabbitmq.addresses中定义的集群。
另一种尝试是为活页夹设置环境,例如:
spring.rabbitmq.addresses: host-rabbitmq2:5672
spring.cloud:
config:
override-system-properties: false
allowOverride: true
overrideNone: true
stream:
binders:
rabbitDefaultInput:
inheritEnvironment: false
defaultCandidate: false
type: rabbit
environment.spring.rabbitmq:
host: host-rabbitmq1:5672
username: xxxxxx
password: yyyyyy
具有相同的结果。
另一种尝试是将两个群集都放在变量spring.rabbitmq.addresses中,
spring.rabbitmq.addresses: host-rabbitmq2:5672,host-rabbitmq1:5672
但是结果是,它打开了与两个群集的连接,但仅与列表中第一个群集中的队列连接。
问题是,是否有任何方法可以在不删除spring.rabbitmq.addresses变量的情况下,使用Spring Cloud Stream连接到2个不同的集群?
预先感谢
addresses
覆盖host
,默认情况下,活页夹继承父环境-您是否尝试在活页夹环境中使用addresses
而不是host
?
您也可以将inheritEnvironment
设置为false
。