Я использую Spring 2.5 со своим пользовательским классом, который реализует MessageListener. Если JmsException брошен в мой onMessage () метод, что происходит с состоянием очереди?
Сообщение считают "поставленным" очередью, которой называют момент onMessage? Или JmsException инициировал некоторый откат, и сообщение повторно введено на очереди?
Заранее спасибо!
Из спецификации JMS 1.1 ...
4.5.2 Асинхронная доставка
Клиент может зарегистрировать объект, реализующий интерфейс JMS MessageListener, с помощью MessageConsumer. Когда сообщения поступают к потребителю, провайдер доставляет их, вызывая метод onMessage слушателя.
Слушатель может вызвать исключение RuntimeException; однако это считается ошибкой программирования клиента. Слушатели с хорошим поведением должны улавливать такие исключения и пытаться перенаправить сообщения, вызывающие их, в какую-либо форму назначения «необработанного сообщения», зависящего от приложения.
Результат выдачи слушателем исключения RuntimeException зависит от режима подтверждения сеанса.
Провайдеры JMS должны помечать клиентов со слушателями сообщений, которые генерируют исключения RuntimeExceptions, как возможные неисправности.