我正在使用 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
。
是否有可能使每次轮询尝试都具有事务性?
PS。我有一个针对每个 SQL 的计时器组件和单独路由的解决方法,但我想知道是否可以仅使用上述 1 个路由来解决我的问题。