В настоящее время я работаю над автономными приложениями 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
справляется с назначенным им соединением.
Спасибо.