У меня реализован Spring MDP с использованием Spring DefaultMessageListenderContainer
, который прослушивает очередь ввода в WebSphere MQ v7.1. Если поступает плохое сообщение (которое вызывает RuntimeException
), то в настоящее время происходит следующее: транзакция откатывается и сообщение помещается обратно в очередь. Однако MDP входит в бесконечный цикл.
Вопрос 1. Для моих требований я хотел бы иметь возможность отключить обработку в тот момент, когда она увидит плохое сообщение. Не требуется повторных попыток. Можно ли корректно отключить прослушиватель сообщений в случае, если он видит плохое сообщение (в отличие от грубых System.exit()
или методов такого рода)? Мне определенно не нравится идти в бесконечный цикл.
Edit:
Вопрос 2. Есть ли способ остановить или приостановить контейнер слушателя, чтобы остановить дальнейшую обработку сообщений?