Я использую Camel для интеграции приложения Spring Boot с другими доменами. У меня есть простой маршрут, настроенный с использованием компонента SQL для опроса и обновления БД:
from("sql:"+selectSQL+"?consumer.delay=20000&onConsume="+updateSQL)
.log("---select sql done")
.to("sql:" + insertSQL);
и SQL такие:
String selectSQL = "SELECT * FROM T1 WHERE PROCESSED is null and ROWNUM <4 for update skip locked";
String updateSQL = "update T1 set PROCESSED='TRUE' where id = :#id";
String insertSQL = "insert into T2 (col_name...) values (col_value...)";
И я хотел бы, чтобы эти SQL-запросы выполнялись внутри 1 транзакции для одного запроса на опрос. Я знаю, что могу сделать маршрут транзакцией с .transacted("propagationPolicy")
, но я не могу поставить его перед from
.
Можно ли сделать каждую попытку опроса транзакционной?
ПС. У меня есть обходной путь с компонентом таймера и отдельным маршрутом для каждого SQL, но мне интересно, можно ли решить мою проблему, используя только 1 маршрут, как указано выше.