当前位置: 首页 > news >正文

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

什么情况下会导致消息的重复消费——在消费者还没成功发送自动确认机制时发生:

  • 网络抖动
  • 消费者挂了

解决方案

  • 每条消息设置一个唯一的标识id
  • 幂等方案:【Redis分布式锁、数据库锁(悲观锁、乐观锁)】

 面试官:如何解决MQ消息重复消费的问题

候选人:我们当时是设置了自动确认机制,当服务还没来得及给MQ确认的时候,服务宕机了,导致服务重启之后,又消费了一次消息。这样就重复消费了。

因为我们当时有一个业务的唯一标识,我们再处理消息时,先到数据库查询一下,这个数据是否存在,如果不存在,说明没有处理过,这个时候就可以正常处理这个消息了。如果已经存在这个数据了,就说明消息重复消费了,我们就不需要再消费了。

第二种就是典型的幂等性问题,比如,Redis分布式锁、数据库的锁都是可以的。


http://www.mrgr.cn/news/59917.html

相关文章:

  • Android 添加如下飞行模式(飞行模式开和关、飞行模式开关菜单显示隐藏)接口
  • 《Python游戏编程入门》注-第3章3
  • 【力扣 + 牛客 | SQL题 | 每日4题】牛客大厂笔试真题SQLW6, W7, W8
  • Day 53 图论五
  • Apache HttpClient 和 OkHttpClient 的使用
  • 【MySQL】:数据库基础
  • JavaScript 数据类型与操作
  • LeetCode算法(哈希)
  • osgEarth中显示XYZ影像服务
  • C++STL之stack
  • Python条形图 | 指标(特征)重要性图的绘制
  • 高效网络自动化:Python在网络基础中的应用
  • Java设计模式之代理模式(一)
  • 《模型部署》—— 客户端与服务端之间的交互实现模型的输出结果
  • 第十一部分 Java 数据结构及集合
  • 动态规划 —— 斐波那契数列模型-解码方法
  • HarmonyOS NEXT 应用开发实战(八、知乎日报List列表下拉刷新及上滑加载更多分页的实现)
  • 【笔记】Diffusion Model 扩散过程(熵增过程:从有序变为无序):在原始分布上逐步的加高斯噪声,加到最后这个分布就变成一个各项独立的高斯分布
  • 常用 Web 框架
  • 我的电脑问题
  • 使用openssl验证https配置的ssl证书是否可以正常访问
  • Mybatis-plus-扩展功能
  • linux中级(NFS服务器)
  • Linux TCP CC状态机
  • Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践
  • uniapp实现与webview之间的相互通讯