骆驼拦截交易提交

Camel Intercept transaction commit

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

速度处理是我们的主要要求之一,也是我们架构的一部分,我们正在考虑自定义缓存机制。在高层次上,如果缓存中存在某些数据,则无需从我们的存储(例如数据库)中获取它。

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

所以我的问题是,仅当跨国路线完成时,执行操作(例如我们更新缓存)的最佳方式是什么。在正常的仅 spring 应用程序中,我会使用带有 TransactionPhase.AFTER_COMMIT 阶段的 TransactionalEventListener 或仅使用普通的非声明性事务(在代码中管理事务的开始和结束)。

Camel 框架带有很多好的特性,如果不使用它会很遗憾,因为这是不可能的。我相信我们的用例并不少见,希望听到一些关于如何实现这一点的建议。

提前谢谢你, 朱利安

查看 onCompletion

By default the onCompletion will be triggered when the Exchange is complete and regardless if the Exchange completed with success or with an failure (such as an Exception was thrown). You can limit the trigger to only occur onCompleteOnly or by onFailureOnly