我有一个spring引导应用程序(让我们称之为示例-服务),它具有以下配置,可以连接到两个不同的rabbitmq集群。
spring:
cloud:
stream:
defaultBinder: rabbitA
binders:
rabbitA:
inheritEnvironment: false
defaultCandidate: false
type: rabbit
environment:
spring:
rabbitmq:
addresses: rabbitmq-a:5672
username: user-a
password: password-a
rabbitB:
inheritEnvironment: false
defaultCandidate: false
type: rabbit
environment:
spring:
rabbitmq:
addresses: rabbitmq-b:5672
username: user-b
password: password-b
bindings:
dataFromA:
destination: exchange-1
group: queue-1
binder: rabbitA
dataFromB:
destination: exchange-2
group: queue-2
binder: rabbitB它本身工作得很好,它连接到两个集群。问题是,此服务部署在具有以下文件的spring配置服务器的环境中:
application.yml
spring.rabbitmq:
addresses: rabbitmq-a:5672
username: user-a
password: password-a然后,这似乎覆盖了位于“环境”属性下的每个绑定器的配置集。所以我需要添加这个额外的配置。
example-service.yml
spring.cloud:
config:
overrideSystemProperties: false
allowOverride: true
overrideNone: false现在,示例服务再次连接到两个rabbitmq集群。但我已经观察到了某些副作用,主要是无法覆盖配置服务器示例中的其他属性--service.yml,这是我真正需要的。因此,我放弃了使用allowOverride及其相关属性。
问题是.是否有可能在不使用allowOverride的情况下工作,同时在远程配置服务器application.yml中保留Spring.rabbitmq.Address/用户名/密码?
先谢谢你。
致以亲切的问候。
发布于 2020-07-20 16:08:49
你用的是哪个版本?我刚刚用3.0.6测试了它,它运行得很好:
spring:
cloud:
stream:
binders:
rabbitA:
type: rabbit
inherit-environment: false
environment:
spring:
rabbitmq:
virtual-host: A
rabbitB:
type: rabbit
inherit-environment: false
environment:
spring:
rabbitmq:
virtual-host: B
bindings:
input1:
binder: rabbitA
destination: input1
group: foo
input2:
binder: rabbitB
destination: input2
group: bar
rabbitmq:
virtual-host: /

可能没有关联,但是您的group缩进是错误的。
https://stackoverflow.com/questions/62959656
复制相似问题