首页 > 解决方案 > 骆驼拦截事务提交

问题描述

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

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

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

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

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

提前谢谢你,朱利安

标签: apache-camelspring-camel

解决方案


查看onCompletion

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


推荐阅读