天天看點

消息中間件--RabbitMQ學習(九)---進階特性之消息可靠性投遞

消息如何保障100%的投遞成功?

什麼是生産端的可靠性投遞?

  • 保障消息的成功發出
  • 保障MQ節點的成功接收
  • 發送端收到MQ節點( Broker)确認應答
  • 完善的消息進行補償機制

生産端-可靠性投遞(一)

BAT/TMD網際網路大廠的解決方案:

  • 消息落庫,對消息狀态進行打标
  • 消息的延遲投遞,做二次确認,回調檢查

生産端-可靠性投遞(二)

消息中間件--RabbitMQ學習(九)---進階特性之消息可靠性投遞
  • 1.進行消息的入庫
  • 2.發送消息
  • 3.将受到消息的應答傳回給生産端
  • 4.修改庫中消息狀态
  • 5.查詢資料庫中資料,檢視次數,假定次數為3,超過三次狀态麼米有被修改,确認沒有受到消息
  • 6.重發該消息,設定重發消息限制,假定三次,如果發了3次都不成功。設定消息狀态為2.确認該消息存在問題,對此消息打标,人工确認。

生産端-可靠性投遞(三)

  • 保障MQ我們思考如果第-種可靠性投遞,在高并發的場景下是否适合?
  • 消息的延遲投遞,做二次确認,回調檢査
消息中間件--RabbitMQ學習(九)---進階特性之消息可靠性投遞
  • 1.發送消息(生成兩條消息 第一條真實消息,第二條消息,延遲确認的消息,可能延遲消息可能會在第2分鐘或者第三分鐘後發送)
  • 2.broker接收消息
  • 3.監聽的消費端接收消息
  • 4.消費端處理完消息之後,發送一個确認消息到broker
  • 5.監聽确認消息的消息隊列,接收确認消息,Callback服務接收到,存儲到資料庫
  • 6.延遲投遞的消息發送了,被Check Detail監聽到,Callback服務接收到,檢查資料庫是否存儲
  • 7.檢查到沒有儲存,重發該消息,ReSend一次這個消息
  • 8.重走該流程