消息轨迹查询的必要性
消息系统作为互联网行业削峰填谷的利器,是后端应用系统来进行异步解耦的重要工具;
而消息系统产生的消息也是应用系统数据流正确扭转的重要支撑。
为了保证消息轨迹(从那个地方产生,流向了那个地方)可查询,并且提供追本溯源的功能,是保证消息系统高可靠的一部分
消息轨迹查询的目标
规范化Rabbit的Exchange、RouteKey、Queue的使用
消息轨迹的查询及消息丢失后可进行消息回朔
对内部的消息进行分析及统计,能够预估Rabbit的容量规划及其他分析作用
增加消息剔重的操作,防止在网络抖动情况下,消息重复投递
架构方案
开发工作
- 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页面上重新入队的功能(此功能将不能保证消息的顺序)