Как работают транзакции на маршрутах Верблюда с Spring DSL и одним из маршрутов выбрасывается Exception?Операции с базами данных между несколькими маршрутами на верблюдах
Если routeB создает исключение, как исключение будет передаваться обратно на routeA.
Если исключение выбрано в routeB, я мог видеть, что transactionalErrorHandler
обрабатывает исключение и откатывает транзакцию.
Установка errorHandlerRef="noErrorHandler"
на routeB не помогает.
Как мы можем это сделать?
Мои Camel маршруты определение:
<route id="routeA">
<from uri="direct-vm:endpointA" />
<transacted />
<to uri="direct-vm:endPointB" />
<bean ref="beanA" method="save" />
<onException>
<exception>java.lang.Exception>
<handled><constant>true</constant></handled>
<bean ref="beanA" method="handleError" />
<rollback markRollbackOnly="true" />
</onException>
</route>
<route id="routeB">
<from uri="direct-vm:endPointB" />
<throwException ref="ex"/>
</route>
Возможно, у меня возник вопрос с вопросом. Оба маршрута должны участвовать в транзакции и когда routeB выдает исключение, routeA onException должен обрабатывать исключение вместо транзакцииErrorHandler. – user2997551