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

RocketMQ 消息消费失败的处理机制

在分布式消息系统中,处理消费失败的消息是非常关键的一环。
RocketMQ 提供了一套完整的消息消费失败处理机制,下面我将简要介绍一下其处理逻辑。
截图代码版本:4.9.8

在这里插入图片描述

步骤1

当消息消费失败时,RocketMQ会发送一个code为36的请求到消息所在的 broker。broker接收到这个请求后,会将这个失败的消息放入到一个特殊的retry topic中,准备后续的重试消费。然而,在网络异常的情况下,有可能这里拿到的broker地址是空的,这将导致请求被发送到ns。由于ns并不处理这种类型的请求,因此,在网络异常的情况下,会出现请求超时等待的情况**(这个我们在多az做断网演练时遇到过)**。

在这里插入图片描述

步骤2

如果步骤1失败,即消息没有成功地被放入retry topic,客户端会尝试选择其他的broker进行发送。这样,即使某个broker出现问题,我们仍然可以确保消息得以在retry topic中得到存储,以便后续进行重试消费。

在这里插入图片描述
在这里插入图片描述

步骤3

如果步骤2也失败,即消息在所有的broker中都没有成功地放入retry topic,那么客户端会将消息塞回到消费的队列中,在5秒后再次尝试消费。

总结

总的来说,RocketMQ在处理消费失败的消息时,提供了一套从多个角度进行保障的策略。无论是通过发送到不同broker的retry topic,还是通过延迟再次消费,都能在一定程度上确保消息的最终一致性,降低消息丢失的风险。

http://www.lryc.cn/news/474110.html

相关文章:

  • 三、Java并发 Java 线程池 ( Thread Pool )
  • zabbix安装配置与使用
  • 第3关:命题逻辑推理
  • 第三份代码:VoxelNet的pytorch实现
  • Backtrader-Broker05
  • 分布式和微服务系统区别
  • ElementUI el-table 多选以及点击某一行的任意位置就勾选上
  • 博物馆3D数字化的优势有哪些?
  • Hi3516/Hi3519DV500移植YOLOV5、YOLOV6、YOLOV7、YOLOV8开发环境搭建--YOLOV5工程编译移植到开发板测试--(5)
  • springboot揭秘00-基于java配置的spring容器
  • docker配置mysql
  • 说说Dubbo有哪些核心组件?
  • 视频文件损坏无法播放怎么办?有什么办法可以修复视频吗?
  • flutter ios ffi 调试 .a文件 debug可以 release 不行
  • ADB指定进程名称kill进程
  • 巨好看的登录注册界面源码
  • Python 数据结构
  • 计算机网络八股文个人总结
  • Flutter使用share_plus是提示发现了重复的类
  • 【Linux】编辑器vim 与 编译器gcc/g++
  • 音频中sample rate是什么意思?
  • Java思想
  • 演练纪实丨 同创永益圆满完成10月份灾备切换演练支持
  • UE Mutiplayer(1):网络概述
  • 【SQL Server】中关于 COUNT 的一些使用方式区别
  • 第5关:主合取范式
  • vscode摸鱼学习插件开发
  • 多线程编程与并发控制缓存策略负载均衡数据库优化
  • Gradio DataFrame分页功能详解:从入门到实战
  • [OPEN SQL] FOR ALL ENTRIES IN