目前我正在开发一个连接到 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
处理分配给它们的连接。
谢谢你。