消息可靠性解决,幂等性解决。
Rabbit-应用问题解决方案
消息可靠性解决
架构图
![]()
解决思路:
- 回调检查
- producer发送消息,consumer消费消息后,要发送确认消息。
- producer发送消息后,等3分钟再发送一条同样的消息
- 对比延迟3分钟的消息和确认消息,有延迟消息无确认消息时,让producer重新发这一条消息。
- 定时检查
- 检查producer库中的消息和确认消息库是否一致,producer库中有,确认消息库中没有时,让producer重新发消息。
幂等性解决
解决方法:
- 使用全局MessageID
- 乐观锁
全局MessageID
发送消息时发送MessageID,消费消息时去redis中判断是否存在MessageID。
如果存在,则代表消息已经被消费。
如果不存在,则去消费该消息,消费完成后存储到redis中。