В моем приложении у меня есть очередь (HornetQ), настроенная на JBoss 7 AS. Я использовал Spring, чтобы выполнить некоторую работу после получения сообщений (сохранение значений в базе данных и т. Д.), А затем потребитель совершает сеанс JMS. Иногда, когда при обработке сообщения возникает исключение, исключение потребителя прерывается внезапно. И сообщение остается в состоянии «в доставке». В моей рабочей очереди около 30 сообщений.
Я попытался перезагрузить пользователя, но состояние этих сообщений не изменилось. Единственный способ удалить эти сообщения из очереди - это перезапустить очередь. Но прежде чем сделать это, я хочу, чтобы прочитать эти сообщения, чтобы , что они могут быть исправлены и отправлены в очередь снова для обработки. Я пробовал использовать QueueBrowser для их чтения, но он не работает. Я много искал в Google, но не мог найти любой способ прочитать эти сообщения.Изменение состояния сообщений, которые находятся «в доставке»
Я использую транзакционную сессию, где когда-то сообщение обрабатывается, я звоню:
session.commit();
Это посылает подтверждение. Я реализую
org.springframework.jms.listener.SessionAwareMessageListener
, чтобы получать сообщения весной, а затем обработать их. При обработке сообщений я использую весеннюю партию для вставки некоторых данных в базу данных. Для суставного корпуса он пытается вставить слишком большие данные, чтобы их вставляли в столбец. Он выдает исключение, и транзакция прерывается.
Теперь я установил, что мой производитель и потребитель не имеют таких данных, чтобы этот случай не повторился.
Но мой вопрос в том, что касается сообщений о состоянии 30 "в доставке", которые находятся в моей производственной очереди? Я хочу их прочитать, чтобы они могли быть исправлены и отправлены в очередь для обработки. Есть ли способ прочитать эти сообщения? Как только я узнаю их содержимое, я могу перезапустить очередь и отправить их снова (после их исправления).
Поблагодарив вас в ожидании,
Suvarna
Привет Clebert, Большое спасибо за быстрый и подробный ответ. Это помогло. Я редактировал мой вопрос, имея более подробную информацию. Не могли бы вы помочь? – SNJoshi
Я уже ответил на это .. вам нужно либо откат отката, когда ваша вещь терпит неудачу, либо закрывает ее. если вы оставите его открытым, он останется таким. –
Еще раз спасибо за ответ. Но я не понимаю, я не могу прочитать 30 сообщений о состоянии доставки. Потребитель считывает и обрабатывает новые сообщения, добавленные в очередь, но старые сообщения не читаются. Я попытался создать еще одного потребителя , но эти старые сообщения, похоже, застряли. :( – SNJoshi