Из спецификации JMS 1.1 ...
4.5.2 Асинхронная доставка
Клиент может зарегистрировать объект, реализующий интерфейс JMS MessageListener, с помощью MessageConsumer. Когда сообщения поступают для потребителя, поставщик доставляет их, вызывая метод onMessage слушателя.
Слушатель может вызвать исключение RuntimeException; однако это считается ошибкой программирования клиента. Слушатели с хорошим поведением должны перехватывать такие исключения и пытаться перенаправить сообщения, вызывающие их, в какую-либо форму назначения «необработанного сообщения» для конкретного приложения.
Результат того, что слушатель выбрасывает RuntimeException, зависит от режима подтверждения сеанса.
- AUTO_ACKNOWLEDGE или
DUPS_OK_ACKNOWLEDGE - сообщение
будет немедленно доставлено.
сколько раз провайдер JMS будет
повторно доставить то же сообщение перед
сдача зависит от поставщика.
JMSRedelivered поле заголовка сообщения
будет установлено сообщение доставлено
при этих обстоятельствах.
- CLIENT_ACKNOWLEDGE - следующее сообщение
для слушателя доставлено. Если
клиент хочет иметь предыдущий
неподтвержденное сообщение доставлено,
он должен восстановить сеанс вручную.
- Transacted Session - следующее сообщение
для слушателя доставлено.
клиент может либо зафиксировать, либо откатить
сеанс (другими словами,
RuntimeException не
автоматически откатить сессию).
Поставщики JMS должны помечать клиентов прослушивателями сообщений, которые выдают
Возможные исключения RuntimeException: