Rabbit可靠性消息投遞

目錄

一.從架構角度分析消息可靠性投遞

二.


一.從架構角度分析消息可靠性投遞

  1. 將數據插入到業務表中,同時將日誌存入到MSGDB中(包含一個狀態,初始值爲0),二者保證原子性。併發量大的時候,
  2. 業務層將消息投遞給MQ Broker
  3. Broker異步返回應答ack,Produce Component(監聽組件)進行監聽ack()
  4. Produce t監聽到ack後,更新MSG DB表中數據,將0改爲1
  5. 分佈式定時任務系統定時查看MSG表中的數據是否爲都爲,將狀態不是1的數據重新投遞
  6. 如果MSG DB表中的數據一直爲0,重新發送消息
  7. 如果發送的數據累計3次都發送失敗,將狀態改爲2.表示消息發送失敗,將BIZ和MSG回滾(不能刪除數據)。極端情況下,第三次broker收到消息並返回ack,此時網絡異常,producer沒有收到ack,但此時消息已經到了下一個環節,需要和表中的數據進行對比,根據業務是否將數據狀態修改。

二.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章