spring事务跨系统交互最终一致性方案

本文通过具体代码示例,展示了如何使用事务控制来确保在系统开发中,特别是在涉及多个系统交互时,数据更新和插入操作的一致性。关键在于实现要么全部成功,要么全部失败的最终一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信很多小伙伴在系统开发的过程经常会和其它系统做交互,写接口,涉及到数据的更新、插入操作,此时就需要有事务控制两个系统状态和数据保持一致性的必要了。这里说的一致性指的是要么一起成功,要么一起失败,最终一致性。
下面写一段代码,演示

/**
* 保存当前系统数据的同时,更新第三方系统的状态
**/
@Transactional(rollbackFor = Exception.class)
public boolean saveAndUpdateStatus(XxxModel model) {
	try {
		//保存表单
		service.save(model);
		//更新状态
		boolean status = xxxService.updateStatus();
		//根据调用结果 判断更新是否成功
		if (!status) {
			//抛出异常 让当前表单数据回滚
			throw new Exception("XX系统某单状态更新失败");
		}
		return true;
	} catch (Exception ex) {
            logger.info("saveAndUpdateStatus error :{}", ex.getMessage());
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return false;
        }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值