spring事務跨系統交互最終一致性方案

相信很多小夥伴在系統開發的過程經常會和其它系統做交互,寫接口,涉及到數據的更新、插入操作,此時就需要有事務控制兩個系統狀態和數據保持一致性的必要了。這裏說的一致性指的是要麼一起成功,要麼一起失敗,最終一致性。
下面寫一段代碼,演示

/**
* 保存當前系統數據的同時,更新第三方系統的狀態
**/
@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;
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章