2017-06-15 65 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

相關問題