У меня есть простой тестовый пример, когда я запускаю сервер HornetQ (V2.4.7.Final) как часть контекста Spring. Это работает очень хорошо, и у меня есть доступ к очереди через JMS, HornetQ API и/или JMX.
TestCase
Предполагается, что тестовый сценарий опустит очередь при запуске, проверьте, что она пуста, а затем добавьте 10 сообщений в очередь. Пока в этой очереди нет потребителей, это работает с использованием либо очереди управления, либо JMSQueueControl
. Даже выполнение некоторых операций в очереди через JMX работает хорошо.
Описание проблемы
Как только я добавляю слушателя сообщений в эту очередь с помощью конфигурации Spring - и слушатель потребляет сообщения, как ожидалось, - я не могу удалить все сообщения из очереди. Ни вызов метода через JMX, ни очередь управления, ни JMSQueueControl
не работают, т.е. Методы вызываются без исключения, но они не показывают никакого эффекта.
Я подумал, что, возможно, мне нужно приостановить очередь, прежде чем делать некоторые изменения в ее содержании, но приостановка также не работает. Я вижу, что очередь приостанавливается через JMX, и об этом сообщается при использовании API, но потребитель все еще потребляет сообщения из самой очереди. Таким образом, я думаю, что это не было приостановлено вообще.
Я знаю, что это сложно без исходного кода, но с моей точки зрения все это довольно простая настройка, поскольку вы находите ее во многих и многих учебниках. Может ли кто-нибудь дать совет, что я делаю неправильно. В случае, если какой-либо исходный код необходим, оставьте комментарий, и я добавлю части revelant.