Вам необходимо позвонить по номеру close()
method на свой номер MessageProducer
. В соответствии с Документами Java: -
void close()
throws JMSException
Закрывает производителя сообщений.
Поскольку поставщик может выделять некоторые ресурсы от имени MessageProducer
за пределами виртуальной машины Java, клиенты должны закрыть их, когда они не нужны. Опираясь на сбор мусора, чтобы в конечном итоге вернуть эти ресурсы, может быть недостаточно своевременным.
В соответствии с пружинной CachingConnectionFactory документы: -
Примечание: Эта ConnectionFactory требует явного закрытия всех сессий , полученных от его общей связи. Это обычная рекомендация для собственного кода доступа JMS в любом случае. Однако с этим ConnectionFactory его использование является обязательным для фактического разрешения Повторное использование сеанса.
Так что вам нужно позвонить getCachedSessionProxy вместо getSession и когда-то сделали с отправкой сообщения вызвать Close() (в блоке, наконец). Согласно исходному коду, закрытый вызов этого прокси-сервера сеанса обрабатывается таким образом, что сеанс и обработчик сообщений повторно используются. В комментариях Гэри говорится то же самое.
Это может быть связано с тем, как вы его используете. Некоторый код для показа? – Saket