消息軌跡查詢的必要性
消息系統(tǒng)作為互聯(lián)網(wǎng)行業(yè)削峰填谷的利器,是后端應(yīng)用系統(tǒng)來進(jìn)行異步解耦的重要工具;
而消息系統(tǒng)產(chǎn)生的消息也是應(yīng)用系統(tǒng)數(shù)據(jù)流正確扭轉(zhuǎn)的重要支撐。
為了保證消息軌跡(從那個(gè)地方產(chǎn)生,流向了那個(gè)地方)可查詢,并且提供追本溯源的功能,是保證消息系統(tǒng)高可靠的一部分
消息軌跡查詢的目標(biāo)
規(guī)范化Rabbit的Exchange、RouteKey、Queue的使用
消息軌跡的查詢及消息丟失后可進(jìn)行消息回朔
對內(nèi)部的消息進(jìn)行分析及統(tǒng)計(jì),能夠預(yù)估Rabbit的容量規(guī)劃及其他分析作用
增加消息剔重的操作,防止在網(wǎng)絡(luò)抖動(dòng)情況下,消息重復(fù)投遞
架構(gòu)方案

image.png
開發(fā)工作
- sdk的開發(fā)(針對spring-rabbit)
1)消息生成MessageId;Id格式暫定為: ProducerIP+日期時(shí)間戳- 消息異步序列化到DB中,需要批量及異步,不能對業(yè)務(wù)放使用產(chǎn)生延遲
3)將exchange、queue、兩者申請api去除掉,需要去console中去申請
4)消息剔重,防止在網(wǎng)絡(luò)抖動(dòng)情況下,消息會進(jìn)行重復(fù)投遞
- 消息異步序列化到DB中,需要批量及異步,不能對業(yè)務(wù)放使用產(chǎn)生延遲
- Webconsole的開發(fā)
1) Exchange的CURD操作
2) Queue的CURD操作
3) 消息軌跡的查詢,提供查詢方式有 Exchange、RouteKey、機(jī)器IP、消息發(fā)送時(shí)間、消息ID五種查詢方式
4) 消息補(bǔ)償,提供在Console頁面上重新入隊(duì)的功能(此功能將不能保證消息的順序)