2017-06-15 8 views
-1

初期設定以下の特性:Spring Cloud Steam Binder SPIレジリエンスの方法は? application.propertiesから

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 spring。 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を使用してDB接続ファクトリでも同様のことができます。工場を再作成します。他のビーンリフレッシュに触れずにバインダーSPIをリフレッシュする方法は? – user7915099

+0

私はそれが可能ではないと思うし、それは良いアイデアだとは思わない。ブローカーが途中で飛行機を変えた場合に起こる多くの調整があります。まだ処理されていないメッセージ、再試行中のメッセージ、これで間違ってしまうことが多すぎます。あなたのアプリケーションが別のブローカーを指すようにする必要がある場合は、青緑の配備で新しいものを開始し、新しいブローカーをポイントし、古いものを使い切ってから終了します。 –

+0

メッセージの耐久性が要求されないメッセージバスインフラストラクチャを作成しています。このバスは特定の目的に使用されます。基本的には、問題が発生したときに別のDRセットアップに移行することができます。 – user7915099

関連する問題