分布式事物 訊息佇列來避免 寫給自己看的

2021-08-22 02:59:24 字數 813 閱讀 6122

訊息佇列避免分布式事物

@transactional

public void testdistributedtransaction(long goodsid)

//本地操作

count = orderdao.insertorder(1000, goodsid, "普通買賣");

if (count != 1)

//遠端操作通過訊息佇列

//這裡將userservice的addscore操作通過訊息中心去完成,避開分布式事務。

try catch (exception e)

}具體的方法如下

//產品goods的乙個service  userservice是遠端的服務

@transactional

@override

public void testdistributedtransaction(long goodsid)

count = orderdao.insertorder(1000, goodsid, "普通買賣");

if (count != 1)

//這裡將userservice的addscore操作通過訊息中心去完成,避開分布式事務。

try catch (exception e)

}

自己的理解

這種訊息方式事物一般不回滾 

一直重試 保證最終一致

如果實在不行最後進入人工介入

如果非要回滾應該用tcc等手段 

分布式訊息佇列

以下是訊息佇列以下的大綱,本文主要介紹訊息佇列概述,訊息佇列應用場景和訊息中介軟體示例 電商,日誌系統 訊息佇列概述 訊息佇列應用場景 訊息中介軟體示例 jms訊息服務 見第二篇 大型 架構系列 分布式訊息佇列 二 常用訊息佇列 見第二篇 大型 架構系列 分布式訊息佇列 二 參考 推薦 資料 見第二...

分布式訊息佇列

訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構。是大型分布式系統不可缺少的中介軟體。目前在生產環境,使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq等。...

分布式訊息佇列(1)

訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構。是大型分布式系統不可缺少的中介軟體。目前在生產環境,使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq等。...