訊息佇列避免分布式事物
@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等。...