【发布时间】:2014-11-26 03:00:45
【问题描述】:
目前我正在开发一个独立的 Java 应用程序,该应用程序连接到 Websphere MQ 以发送和接收消息。
流程处于异步模式,我们使用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 如何处理分配给它们的连接。
谢谢。
【问题讨论】:
标签: java jms apache-commons-pool