使用RabbitMQ實現分布式事務


 

RabbitMQ解決分布式事務思路:

案例: 經典案例,以目前流行點外賣的案例,用戶下單后,調用訂單服務,讓后訂單服務調用派單系統通知送外賣人員送單,這時候訂單系統與派單系統采用MQ異步通訊。

RabbitMQ解決分布式事務原理采用最終一致性原理

需要保證以下三要素

1、確認生產者一定要將數據投遞到MQ服務器中(采用MQ消息確認機制)

2、MQ消費者消息能夠正確消費消息,采用手動ACK模式(注意重試冪等性問題)

3、如何保證第一個事務先執行,采用補償機制,在創建一個補單消費者進行監聽,如果訂單沒有創建成功,進行補單。

 

如果生產者投遞消息到MQ服務器成功

  場景1:如果消費者消費消息失敗了,生產者是不需要回滾事務的。

  解決方案:消費者采用手動ack應答模式,采用MQ進行補償重試機制,注意MQ補償冪等性問題。

 問題:如何確保生產者投遞消息到MQ服務器一定能成功?

 解決方案:confirm機制(確認應答機制)。

場景2 如果生產者投遞消息到MQ服務器失敗,如何解決?

 解決方案:使用生產者重試機制進行發消息,注意冪等性問題。

場景3  如何保證一個事務先執行,生產者投遞消息到MQ服務器成功,消費者消費成功了,但是訂單卻回滾了。 

 解決方案:補單機制。

 

 

傳統解決方式:

RabbitMq解決方案:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM