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

RocketMQ重复消费的症状以及解决方案

RocketMQ重复消费的症状以及解决方案

生产消息时重复

症状

当一条消息已被成功发送到 消费者 并完成持久化,此时出现了网络闪断或者客户端宕机,导致服务端对客户端应答失败。 如果此时 生产者 意识到消息发送失败并尝试再次发送消息,消费者 后续会收到两条内容相同并且 ID 也相同的消息。
在这里插入图片描述

方案

  • 避免消费重复产生,找到原因,并做代码的限制。
  • 消费数据时利用Java代码做ID的重复校验,重复则放弃,并返回异常信息。也可以考虑针对数据库有条件的插入语句,限制重复插入。
  • 消费数据时,通过订阅的记录和消费的结果来判断,此消息是否重复订阅过,如果重复订阅,则不在数据库中插入数据。

消费消息时重复

症状

消息已投递到 消费者 并完成业务处理,当 消费者MQ 反馈应答的时候网络闪断。 为了保证消息至少被消费一次,消息队列 MQ 的服务端将在网络恢复后再次尝试投递之前已被处理过的消息,消费者 后续会收到两条内容相同并且 ID 也相同的消息。
在这里插入图片描述

方案

  • 消费数据时利用Java代码做ID的重复校验,重复则放弃,并返回异常信息。也可以考虑针对数据库有条件的插入语句,限制重复插入。

消费时出现异常

症状

消息已投递到 消费者 并完成 业务A 处理,但是 业务B 处理时,发生异常,造成该条消息会标记 消费失败 ,那么为了保证消息至少被消费一次,该条消息会消费多次,直到达到消费16次,会自动放入死信队列。
在这里插入图片描述

方案

  • 分布式事务锁(一般是zookeeper和redis搭建)
http://www.lryc.cn/news/37233.html

相关文章:

  • 数字化时代,企业的商业模式建设
  • 项目实战典型案例23——-注册上nacos上的部分服务总是出现频繁掉线的情况
  • 玩转金山文档 3分钟让你的文档智能化
  • 安装了nodejs怎么安装nvm
  • java安全编码规范考试
  • 表格检测识别技术的发展历程
  • 设计UI - Adobe xd对象介绍
  • 优思学院|精益生产中的“单件流”真的能够做到吗?
  • 移除元素问题解决方法------LeetCode-OJ题
  • JavaScript学习笔记(1.0)
  • FCN网络介绍
  • Idea+maven+spring-cloud项目搭建系列--11 整合dubbo
  • 2023年上半年北京杭州/广州深圳软考中/高级报名入口
  • jupyter notebook配置和使用
  • 【C++】通过stack、queue、deque理解适配器模式
  • JavaScript 高级实例集合
  • Flutter(五)容器类组件
  • 实现满屏品字布局
  • 软件测试-性能测试-基础知识
  • java多线程与线程池-02线程池与锁
  • AB测试——流程介绍(设计实验)
  • C++中的智能指针有哪些?分别解决的问题以及区别?
  • 通达信捉妖改良CCI指标公式,简洁巧妙
  • 「Python 基础」面向对象编程
  • 【K3s】第23篇 一篇文章带你学习k3s私有镜像仓库配置
  • Redis学习【12】之Redis 缓存
  • Bootargs 参数
  • Mybatis框架源码笔记(七)之Mybatis中类型转换模块(TypeHandler)解析
  • 论文阅读《Block-NeRF: Scalable Large Scene Neural View Synthesis》
  • 【Matlab】如何设置多个y轴