各模块概述:
- 生产者向消息服务子系统发送待确认消息,若收到正常回复,则继续执行业务,否则不执行。消息服务子系统收到消息后将消息进行存储本地。
- 生产者执行完业务后发送确认/取消发送消息,消息服务子系统将对应的消息状态改成发送中,并向MQ发送消息。取消发送直接删除。
- 消费者收到消息后处理并直接返回应答。
- 消费者处理成功后,反馈消费服务子系统,消费服务子系统将对应消息删除。
- 消息定时确认服务,(1)用于定时检测消息服务子系统中待确认消息,通过消息id或其他字段向生产者确定消息是发送还是取消。(2)用于定时检测发送中消息是否消费成功,通过消息id或其他字段向消费者确定消息状态。
- 消息管理子系统用于管理异常状态中的消息,如死亡消息支持手动发送。删除错误消息等。
设计中注意点:
- MQ设置:(1)接收直接应答 (2)发送失败尝试次数可以设置0或1
- 消费者:(1)幂等性设计,可以通过业务id+其他字段判断,特殊情况下也可以通过增加消息表查询判断,保证消息只处理一次。
3、消息定时确认服务:(1)设置最大发送次数 (2)发送时间间隔 (3)数据较多时采用分页查询并按时间升序