消息如何保障100%的投遞成功?
什麼是生産端的可靠性投遞?
- 保障消息的成功發出
- 保障MQ節點的成功接收
- 發送端收到MQ節點( Broker)确認應答
- 完善的消息進行補償機制
生産端-可靠性投遞(一)
BAT/TMD網際網路大廠的解決方案:
- 消息落庫,對消息狀态進行打标
- 消息的延遲投遞,做二次确認,回調檢查
生産端-可靠性投遞(二)
- 1.進行消息的入庫
- 2.發送消息
- 3.将受到消息的應答傳回給生産端
- 4.修改庫中消息狀态
- 5.查詢資料庫中資料,檢視次數,假定次數為3,超過三次狀态麼米有被修改,确認沒有受到消息
- 6.重發該消息,設定重發消息限制,假定三次,如果發了3次都不成功。設定消息狀态為2.确認該消息存在問題,對此消息打标,人工确認。
生産端-可靠性投遞(三)
- 保障MQ我們思考如果第-種可靠性投遞,在高并發的場景下是否适合?
- 消息的延遲投遞,做二次确認,回調檢査
- 1.發送消息(生成兩條消息 第一條真實消息,第二條消息,延遲确認的消息,可能延遲消息可能會在第2分鐘或者第三分鐘後發送)
- 2.broker接收消息
- 3.監聽的消費端接收消息
- 4.消費端處理完消息之後,發送一個确認消息到broker
- 5.監聽确認消息的消息隊列,接收确認消息,Callback服務接收到,存儲到資料庫
- 6.延遲投遞的消息發送了,被Check Detail監聽到,Callback服務接收到,檢查資料庫是否存儲
- 7.檢查到沒有儲存,重發該消息,ReSend一次這個消息
- 8.重走該流程