Spring Integration JMS - код Spring фиксируется в RuntimeException - PullRequest
0 голосов
/ 02 февраля 2020

Я хотел бы спросить опытных разработчиков Spring Integration или даже авторов кода о странном поведении, которое я испытываю с моим кодом. Проблема в том, что Spring Code выполняет COMMIT для моего RuntimeException. Итак, вот мои настройки:

1. У меня стандартный адаптер входящего канала JMS, настроенный с использованием

<jms:message-driven-channel-adapter />

У меня есть транзакцияManager, в которой реализован шаблон 1P C с максимальным усилием - тот, что доступен в Spring, ChainedTransactionManager.

Я принимаю сообщения в простом потоке тестирования, где JMS Входящий адаптер публикует только в прямой канал, и через одну конечную точку преобразователя преобразованное сообщение публикуется в другой прямой конечной точке, где обработчик, который является ServiceActivator, намеренно генерирует исключение моего приложения, которое расширяет RuntimeException.

Теперь, когда Я отлаживаю весь поток, и когда я перехожу через внутренний код Spring, я всегда заканчиваю в том месте, где сконфигурированный менеджер транзакций вызывает COMMIT, и, таким образом, мой ChainedTransactionManager также выполняет COMMIT, несмотря на то, что я имитирую ошибку и, таким образом, ясный сценарий отката. Точка останова в методе отката не достигается вообще.

В чем я могу ошибаться?

Теперь я снова просмотрел код, и даже код Spring устанавливает состояние RollbackOnly и выполняет некоторые обработчики исключений, но в конце он все равно успешно продолжается и в конечном итоге он вызывает строку фиксации, как показано на скриншоте, и chainedTransactionManager инструктирует свои локальные ТМ также о фиксации.

Я надеюсь, что есть какая-то деталь / ошибка, которую я не могу обнаружить :) Спасибо!

Снимок экрана из класса .m2 \ repository \ org \ springframework \ spring-jms \ 5.2.3.RELEASE \ spring-jms-5.2.3.RELEASE-sources.jar! \ Org \ springframework \ jms \ listener \ AbstractPollingMessageListenerContainer. java

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...