現在、Websphere MQ に接続してメッセージを送受信するスタンドアロンの Java アプリに取り組んでいます。
フローは非同期モードであり、クラスを使用して実装しMessageListener
、準備ができたときにキューからメッセージを取得します。リスナーでコンシューマを初期化するコードは次のとおりです。
if(connection == null)
connection = getJmsConnection();
try {
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
if (isTopic) {
destination = session.createTopic(destinationName);
} else {
destination = session.createQueue(destinationName);
}
consumer = session.createConsumer(destination);
consumer.setMessageListener(listener);
} catch (JMSException e) {
e.printStackTrace();
}
このgetJmsConnection()
メソッドは、Apache Commons Pool ライブラリを使用して実装されたプールから接続を返します。
私の質問は、プログラムが実行されている限り、プールからリスナーに割り当てられた接続がアクティブになり、そのリスナーに結び付けられるでしょうか? または、接続が断続的に使用され、他のプロセスで再利用できますか? 私たちの考えは、送信プロセスと受信プロセスでプールからの接続を再利用することですが、MessageListener
それらが割り当てられている接続をどのように扱うかわかりません。
ありがとうございました。