消息軌跡查詢的必要性
消息系統作為互聯網行業削峰填谷的利器,是后端應用系統來進行異步解耦的重要工具;
而消息系統產生的消息也是應用系統數據流正確扭轉的重要支撐。
為了保證消息軌跡(從那個地方產生,流向了那個地方)可查詢,并且提供追本溯源的功能,是保證消息系統高可靠的一部分
消息軌跡查詢的目標
規范化Rabbit的Exchange、RouteKey、Queue的使用
消息軌跡的查詢及消息丟失后可進行消息回朔
對內部的消息進行分析及統計,能夠預估Rabbit的容量規劃及其他分析作用
增加消息剔重的操作,防止在網絡抖動情況下,消息重復投遞
架構方案
image.png
開發工作
- sdk的開發(針對spring-rabbit)
1)消息生成MessageId;Id格式暫定為: ProducerIP+日期時間戳- 消息異步序列化到DB中,需要批量及異步,不能對業務放使用產生延遲
3)將exchange、queue、兩者申請api去除掉,需要去console中去申請
4)消息剔重,防止在網絡抖動情況下,消息會進行重復投遞
- 消息異步序列化到DB中,需要批量及異步,不能對業務放使用產生延遲
- Webconsole的開發
1) Exchange的CURD操作
2) Queue的CURD操作
3) 消息軌跡的查詢,提供查詢方式有 Exchange、RouteKey、機器IP、消息發送時間、消息ID五種查詢方式
4) 消息補償,提供在Console頁面上重新入隊的功能(此功能將不能保證消息的順序)