私のアプリケーションが制御されたメンテナンスモードになっている間、すべてのコンシューマ/メッセージリスナを便利に一時停止する方法を理解しようとしています。アプリケーションは、ActiveMQ 5.13.3クライアントライブラリを使用しています。ActiveMQ:接続プーリングを使用するとコンシューマを一時停止/再開する
いくつかの時間前に私はActiveMQConnectionFactory
からPooledConnectionFactory
に1つのものに切り替えました。接続プールから接続を(=フェッチ)、それらが行われたときに、それを「閉じる」、プールに戻す「作成」
ActiveMQConnectionFactory amcf = new ActiveMQConnectionFactory(config.getMessageBrokerUrl());
amcf.setTrustedPackages(Arrays.asList(new String[] {
"some.package.or.other",
"java.lang",
"java.util"
}));
connectionFactory = new PooledConnectionFactory(amcf);
connectionFactory.setCreateConnectionOnStartup(true);
消費者と生産者:そうのように設定されています。明らかにMessageListenersの場合、起動時に1回取得され、アプリケーションシャットダウン時に返されます。
ActiveMQConnection.stop()
それが着信メッセージの接続の配信を一時的に停止します。私が欲しいものにぴったりですが、プールには明らかに多くの接続が含まれています。
どのように休止しますかすべて ActiveMQ接続プールの接続?
ありがとうございます。キューを一時停止することは私にとっては解決策ではなく、他のクライアントは依然としてその上で通信します。ユースケースは、クラスタの個々のノードのシャットダウン制御です。私は接続よりもむしろmessageListenersを停止する方法を検討します。 – Hank