apache-camel - 骆驼拦截事务提交
问题描述
我们正在考虑在我们的一个集成系统中使用 Camel 框架。
速度处理是我们的主要要求之一,也是我们正在考虑自定义缓存机制的架构的一部分。在高层次上,如果缓存中存在某些数据,则无需将其从我们的存储(例如数据库)中取出。
然而,数据一致性是另一个重要的要求。我们不希望缓存中的数据不反映存储中的数据。换句话说,只有在存储提交成功时,我们才需要写入(更新)缓存。
所以我的问题是,只有当跨国路线完成时,执行操作(例如更新缓存)的最佳方式是什么。在一个普通的 spring 应用程序中,我会使用TransactionalEventListener
一个TransactionPhase.AFTER_COMMIT
阶段或一个普通的非声明性事务(在代码中管理事务的开始和结束)。
相反,Camel 框架有很多好的特性,如果不使用它会很遗憾,因为这是不可能的。我相信我们的用例并没有那么不寻常,并希望听到一些关于如何实现这一点的建议。
提前谢谢你,朱利安
解决方案
查看onCompletion。
默认情况下,onCompletion 将在 Exchange 完成时触发,无论 Exchange 是成功完成还是失败(例如抛出异常)。您可以将触发器限制为仅发生 onCompleteOnly 或 onFailureOnly
推荐阅读
- spring-boot - Springboot hot-reload is not working in IDEA
- java - Converted jar to exe file but not working after installation
- python - How to aggregate rows in a dataframe
- bash - ~ 在 bash 命令行中代表什么?
- python - Pip inside virtual environment throws error
- xml - Google Apps 脚本 USPS 地址验证 API
- php - 正则表达式匹配类似 bbcode 的标签之间的内容
- typescript - 地图函数中的括号
- r - 在经度纬度图中可视化精度
- python - 散列 txt 文件中的列表