2017-06-15 67 views
-1

最初配置以下从application.properties属性:如何做Spring Cloud Steam Binder SPI韧性?

spring.cloud.stream.defaultBinder:XXXXX spring.cloud.stream.binders.XXXXX.type:兔 spring.cloud.stream.binders.XXXXX.environment .spring.rabbitmq.addresses: spring.cloud.stream.binders.XXXXX.environment.spring.rabbitmq.username:PPP spring.cloud.stream.binders.XXXXX.environment.spring.rabbitmq.password:QQQQ 春天。 cloud.stream.binders.XXXXX.environment.spring.rabbitmq.virtual-host:/ com/llll/ccc

后来我想更改spring.cloud.stream.binders.X XXXX.environment.spring.rabbitmq.addresses而不停止服务器。我试过下面的方法:

@Autowired 
private EnvironmentManager poEnvironmentManager = null; 

and the in the method 

poEnvironmentManager.setProperty("spring.cloud.stream.binders.XXXXX.environment.spring.rabbitmq.addresses", "......."); 

这是行不通的。让我知道你是否有解决方案。

回答

0

您不能即时更改该属性。这意味着必须创建一个新的连接工厂,可能是应用程序上下文的刷新。你想在这里实现什么,在运行时切换目标代理?

+0

是的,在运行时切换目标代理。我们可以通过使用@RefreshScope为数据库连接工厂实现类似的功能。它重新创建工厂。如何在不触及其他bean刷新的情况下刷新binder SPI? – user7915099

+0

我不认为这是可能的,我也不认为这是一个好主意。如果经纪人在中途转机,将会发生很多协调。仍然没有处理的邮件,重试的邮件,有太多可能会出错的信息。如果您需要将您的应用指向其他经纪商,只需使用蓝绿色部署,启动一个新的代理,指向新代理,用尽旧代理,然后终止它。 –

+0

我们正在创建一个消息总线基础结构,其中不需要消息持久化。这辆巴士将用于特定目的。基本上,我们可以在发生时转移到另一个DR设置。 – user7915099

相关问题