1. 程式人生 > >分散式事務之MQ可靠訊息

分散式事務之MQ可靠訊息

使用MQ可靠訊息能夠解決分散式事務的最終一致性,但不是實時一致(強一致性)。所以使用時要注意應用場景。

MQ可靠訊息:

1.預發訊息:MQ傳送訊息之前把訊息的資訊先存到資料庫中留底,設定一個欄位狀態為待確認。(作用:能夠知道這條訊息是否傳送成功,可進行人工補償)

2.進行業務操作

3.向MQ傳送訊息,傳送成功後把預發訊息的狀態改為傳送中(表示成功傳送),如果失敗就不需要修改

應用場景:充值業務  訂單->賬務

充值成功後

第一步,將訊息的資訊先存到資料庫中留底,設定一個欄位狀態為待確認(預發訊息)

第二步,修改充值的訂單狀態為充值功能

第三步,傳送MQ訊息到賬務系統,通知賬務系統記錄訂單的賬務明細

 

特殊MQ可靠訊息保證事務的場景:使用者短時間多筆消費  訂單->賬戶扣款

如果消費時,先修改訂單狀態,再扣款。有10筆訂單的消費狀態都修成了成功,但是賬戶的餘額不夠錢扣除10筆訂單。這樣就會出問題了

解決的方案:使用者消費時,先扣款再修改訂單

不能使用MQ可靠訊息保證事務的場景:交易完成後既要 扣款 也要 減庫存。這種場場景要使用強一致性事務