Предполагается, что у меня есть один Connection
на JVM (реализован как синглтон) в качестве производной от документов, которые рекомендуют иметь один Connection
в качестве тяжелого объекта.
Из документов:
... соединение является относительно тяжелым объектом.Большинство клиентов будут делать все свои сообщения с помощью одного соединения ... Клиент JMS обычно создает соединение, один или несколько сеансов и несколько производителей и потребителей сообщений.
Я пытаюсьрешить, что делать с моими Sessions
, Producers
и Consumers
относительно ExceptionListener
, который находится на уровне Connection
.
Насколько я понимаю, вполне разумно, что они больше не являютсяможно использовать, когда выбрасывается JMSException
, но я не уверен, что следует делать после запуска вышеуказанного слушателя.
Мои Sessions
хранятся в ThreadLocal<Session>
, который также хранится в одиночном.
Я могу использовать это для вызова MySessionSingleton.closeSession()
в слушателе, но это закроет только Session
, который связан с потоком, в который было сгенерировано исключение, а не все остальные Sessions
.
Кроме того, это делаетне заботиться о Производителях \ Потребителях и их переподключении.
Возможное решение, которое я видел использованным, и я не хочу имитировать, - это иметь Соединение и Сессию для каждого Производителя \ Потребителя, и поэтому яможет контролировать все вышеперечисленное.
Буду признателен за любые мысли,
Иттай
Пояснение:
Моя текущая реализация, написанная бывшим программистом, - это та, которую я упоминаю выше как используемая, иСамая большая проблема для меня заключается в том, что мне нужно, чтобы несколько производителей и потребителей использовали один и тот же Session
, так как мне нужны транзакции JTA, и я думаю (может быть неправильно), что мне нужны эти Производители \ Потребители для совместного использования сессии.
Соединение было производным от этого решения.
Так что, в принципе, даже если я сохраняю отношения одного сеанса на соединение, у меня все еще остается вышеупомянутая проблема, когда в одном сеансе есть несколько производителей \ потребителей.