Сообщения JMS не используются до закрытия соединения с производителем :-( - PullRequest
0 голосов
/ 14 октября 2011

Я относительно новичок в JMS и столкнулся со странной проблемой при реализации моего первого реального приложения. Я не обращаю внимания на любую помощь или совет.

Справочная информация: я использую AtiveMQ (java) в качестве посредника сообщений с нетранзакционными, непостоянными очередями.

Дизайн: у меня есть прямая система производителя / потребителя, основанная на единой очереди. Ряд узлов (в настоящее время 2) помещают сообщения в очередь / потребляют из очереди. Селекторы используются для фильтрации сообщений, которые получает узел.

Проблема: Производитель успешно помещает свои элементы в очередь (я убедился, что они там, используя веб-интерфейс), однако потребители остаются заблокированными и не читают их. Только когда я закрываю соединение JMS в производителе, потребители вступают в жизнь и потребляют сообщения, как и ожидалось.

Мне кажется, что это поведение очень странное, конечно, вам не нужно полностью устанавливать соединение с производителем, чтобы потребители могли читать из очереди. Должно быть, я где-то допустил ошибку (возможно, во время сеансов), но на данный момент количество вещей, которые могут быть неправильными, слишком велико, и я понятия не имею, что может вызвать такое поведение.

Будем весьма благодарны за любые подсказки относительно решения, причины проблемы или только как продолжить отладку.

Спасибо за ваше время,

P.S. Если вам нужна дополнительная информация, я с радостью ее предоставлю

1 Ответ

1 голос
/ 14 октября 2011

Трудно сказать, не видя код, но, похоже, продюсер продан. Вам не нужно закрывать производителя, чтобы потребители могли получить сообщение, но транзакционный производитель не будет отправлять ему сообщения, пока вы не вызовете commit. Другие вещи, чтобы проверить, что соединение было установлено. Кроме того, если у вас много потребителей, вам следует обратиться к настройке предварительной выборки, чтобы убедиться, что один потребитель не обрабатывает все сообщения, может потребоваться установка предварительной выборки 1, но трудно сказать без дальнейшего изучения вашего варианта использования.

...