欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > RabbitMQ消息的重复消费问题如何

RabbitMQ消息的重复消费问题如何

2024/10/23 16:23:16 来源:https://blog.csdn.net/m0_61925586/article/details/141595945  浏览:    关键词:RabbitMQ消息的重复消费问题如何

导致消息重复消费的场景

首先消费者有消息确认机制,来通知MQ说消费者已经消费消息了。

假设现在消费者已经处理完消息,但是还没有来得及给MQ发送确认,此时网络抖动或消费者挂了,等网络恢复或消费者重启后,因为之前MQ没有收到确认,所以这个消息还在MQ中,又因为设置了重试机制,所以消费者还会重新消费消息。

解决方案:

  • 给每条消息设置一个全局唯一的id,比如支付id、订单id、文章id,当消费者接收到消息时,去校验这个id是否存在,比如根据订单id去表中查询,如果不存在,则正常接收消息处理消息;如果已经存在,就说明消息已经被消费过,不需要再消费了
  • 幂等方案:【分布式锁、数据库锁(悲观锁、乐观锁)】,加锁后性能会受影响

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com