2015-06-26 7 views
7

Недавно я обновил сервер от ActiveMQ с 5.8 до последней версии (5.11.1). С тех пор я заметил несколько спорадически, что сообщения будут накапливаться в определенной очереди и не будут удалены.ActiveMQ не принимает сообщения с очереди

Наша архитектура имеет одного производителя, одного потребителя. Я вижу, что потребитель все еще подключен, но сообщения накапливаются от производителя. Мое решение состояло в том, чтобы удалить очередь через веб-консоль. После этого я сразу вижу, как потребитель снова подключается, и сообщения начинают обрабатываться снова.

Если это актуально, в этом случае производитель работает под управлением NMS на .NET, а потребитель запускает JMS на Java 1.7.

+0

Будет ли он работать, если вы отключите/повторно подключите пользователя? Удаление звуков очереди - это «принудительное исправление». – SubOptimal

+0

@SubOptimal хороший вопрос, на самом деле я не уверен в этом. У меня нет приложений в приложении для отключения/повторного подключения потребителя во время работы приложения. Я также не знаю способа обнаружить, что он находится в этом застрявшем состоянии, поскольку с его точки зрения, сообщения просто не входят. – Ternary

+1

Как только сообщение застряло в следующий раз. Вы можете изменить уровень ведения журнала для журнала, связанного с классом 'org.apache.activemq.transport.TransportLogger', на' DEBUG' через интерфейс JMX с помощью JConsole. Затем вы должны увидеть сообщение брокера. Может быть, это объяснит, что произойдет. – SubOptimal

ответ

2

Когда потребитель подключен к очереди, проверьте количество незафиксированных сообщений в очереди с веб-консоли. Если оно больше нуля и не изменяется в течение длительного времени, это означает, что у вашего потребителя возникает некоторая проблема при чтении входного сообщения.

Если вышеуказанный случай верен, это может быть связано с тем, что производитель отправляет файлы, которые не являются жалобой jms.

+0

Это хороший материал, чтобы попробовать, я сделаю это и отчитаюсь. Благодаря! – Ternary

+0

Под «количеством незафиксированных сообщений» вы имеете в виду «Количество ожидающих сообщений» в консоли? Это значение, которое я знаю, отличное от нуля, и, если я нажимаю на очередь, я могу видеть содержимое сообщения, и, по крайней мере, полезная нагрузка выглядит действительной и соответствует тому, что отправляет производитель. – Ternary

0

Я недавно столкнулся с этой проблемой при создании утилиты для перемещения всех сообщений из одной очереди в другую.

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

я забыл вызовите «Пуск»() в моем подключении к очереди. :/

Смежные вопросы