0%

Rabbit-应用问题解决

消息可靠性解决,幂等性解决。

Rabbit-应用问题解决方案

消息可靠性解决

架构图

RabbitMQ消息可靠性保障

解决思路:

  1. 回调检查
    1. producer发送消息,consumer消费消息后,要发送确认消息。
    2. producer发送消息后,等3分钟再发送一条同样的消息
    3. 对比延迟3分钟的消息和确认消息,有延迟消息无确认消息时,让producer重新发这一条消息。
  2. 定时检查
    1. 检查producer库中的消息和确认消息库是否一致,producer库中有,确认消息库中没有时,让producer重新发消息。

幂等性解决

解决方法:

  • 使用全局MessageID
  • 乐观锁

全局MessageID

发送消息时发送MessageID,消费消息时去redis中判断是否存在MessageID。

  • 如果存在,则代表消息已经被消费。

  • 如果不存在,则去消费该消息,消费完成后存储到redis中。