骆驼拦截交易提交

时间:2020-09-09 10:36:58

标签: apache-camel spring-camel

我们正在考虑在我们的集成系统之一中使用Camel框架。

速度处理是我们的主要要求之一,也是我们体系结构的一部分,我们正在考虑使用自定义缓存机制。在较高级别上,如果缓存中存在一些数据,则无需从我们的存储(例如数据库)中获取数据。

但是,数据一致性是另一个重要要求。我们不希望缓存中的数据不能反映存储中的数据。换句话说,仅当存储提交成功时才需要写入(更新)缓存。

所以我的问题是,只有跨国路线完成后,执行动作(如我们更新缓存)的最佳方法是什么?在仅适用于Spring的常规应用程序中,我将使用带有TransactionalEventListener阶段的TransactionPhase.AFTER_COMMIT或仅使用普通的非声明式事务(在代码内部管理事务的开始和结束)。

相反,骆驼框架具有许多好的功能,以致不能使用它是可惜的,因为这是不可能的。我相信我们的用例并不是那么罕见,希望能听到一些有关如何实现这一点的建议。

先谢谢您, 朱利安

1 个答案:

答案 0 :(得分:0)

签出onCompletion

默认情况下,无论Exchange成功完成还是失败(例如引发异常),onCompletion都会在Exchange完成后触发。您可以将触发器限制为仅发生在onCompleteOnly或onFailureOnly