Apache Camel также откатывает SQL в блоке onException - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь построить маршрут Apache Camel, который обрабатывает список строк из таблицы базы данных.

Когда одна строка обрабатывается или есть исключение, я сохраняю запись журнала в другой таблице базы данных. Маршрут обрабатывается и должен откатываться в случае возникновения исключения.

onException(Exception.class)
   .process()//create log entity that I want to persist if an error occurs
   .to("jpa:"+LogEntity.class.getName()+"?usePersist=true)
   .rollback();

from("timer://Timer"+ROUTE_NAME+"?period=15m")
  .transacted(Propagation.REQUIRED.name())
  .to(// sql to get the 
  .split().body()
    .to() // do stuff that might throw an exception
  .end()   
.end();

Проблема заключается в том, что в случае возникновения исключения выполняется откат всей транзакции, включая сохранение записи журнала. Мне необходимо сохранить ошибку, несмотря на откат транзакции.

Как добиться сохранения журнала после отката или вне транзакции?

Я пытался использовать markRollbackOnly() вместо rollback(), а также для извлечения сохраняющегося журнала в отдельный маршрут, который использует .transacted(REQUIRES_NEW) - оба безуспешно.

Я использую Spring Boot 2.0.3 и Apache Camel 2.22.0.

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