亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

跪求!同時有數據庫和消息隊列,消息隊列失敗怎么回退?感激不盡

跪求!同時有數據庫和消息隊列,消息隊列失敗怎么回退?感激不盡

嗶嗶one 2019-07-28 12:18:54
比如下面有段代碼://數據庫操作XXXX//隊列操作QQQQ數據庫操作失敗了可以利用事務rollback但如果數據庫操作成功,而隊列操作失敗,這怎么rollback?或者這個時候應該采取什么方案來保證兩個操作的事務性。
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

這是一個典型的分布式事務的應用場景,如果你們系統中引入了分布式事務很簡單。如果沒引入,可以用一下的做法實現:
數據庫加個字段標識MQ的操作狀態
先寫入數據庫,將這個狀態設置為待確認
寫入MQ,成功后設置MySQL狀態為已確認
如果這個MQ失敗,可以嘗試重試,如果重試失敗,這個狀態設置為失敗
這樣不會影響你的業務邏輯。
                            
查看完整回答
反對 回復 2019-07-28
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

樓上明顯錯誤,兩者不相關,你難道要在隊列里面拋異常?消息隊列最好做到異步處理,不然你就拖累數據庫了。異步里面單獨做隊列推送成功失敗的驗證,然后做回滾處理。具體要看你業務需求了
                            
查看完整回答
反對 回復 2019-07-28
  • 2 回答
  • 0 關注
  • 339 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號