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

《一次静态 ObjectMapper 引发的 RocketMQ 消费异常排查》

静态 ObjectMapper 引发的 RocketMQ 消费异常

  • 一、问题背景
  • 二、问题原因
  • 三、思考与采取措施
  • 四、根本原因(Spring 注入 & 静态变量 & RocketMQ 消费线程)
  • 五、解决方案
  • 六、总结

一、问题背景

在工作中日常使用 RocketMQ 作为消息队列进行异步处理时,发现一个很奇怪的现象:

  • 消费者注册成功,控制台无报错 ✅
  • 消息发送正常✅
  • 但是就是收不到消息 ,没有任何异常的日志❌

二、问题原因

// 问题代码
private static final ObjectMapper objectMapper = new ObjectMapper();@Overridepublic void onMessage(String msg) {try {MyDTO dto = objectMapper.readValue(msg, MyDTO.class);log.info("Received and parsed message: {}", dto);// TODO: process dto} catch (Exception e) {log.error("Failed to deserialize message: {}", msg, e);}}

现象描述:

  1. 消费方法 onMessage 从未被触发
  2. RocketMQ 控制台看消息已经成功发送
  3. 本地没日志也没报错

三、思考与采取措施

排查顺序:

  1. 检查 topic 和 group 是否一致
  2. 检查是否开启消费(listener 生效)
  3. 查看消息轨迹,确认消息已投递
  4. 添加日志发现 onMessage 根本没有触发
  5. 怀疑是反序列化失败,但是catch 里面也没有打日志出来
  6. objectMapper 换成 @Autowired,结果立刻恢复正常

四、根本原因(Spring 注入 & 静态变量 & RocketMQ 消费线程)

  • static final ObjectMapper 手动 new 出来的,不受 Spring 管理
  • Spring 注入的 @Autowired ObjectMapper 是配置完整、统一管理的
  • 如果反序列化失败,RocketMQ 默认不会抛出可见异常,尤其在异步线程中可能被吞掉
  • static 变量初始化早于 Spring 生命周期,可能没准备好就被调用

五、解决方案

  • 不要手动 new ObjectMapper,使用 Spring 注入
@Autowired
private ObjectMapper objectMapper;

六、总结

这个问题看似“像是线程问题”,实则是Spring 生命周期 + 组件注入机制的组合坑。
教训:当 Spring 项目中用到第三方组件(如 ObjectMapper)时,优先用 Spring 提供的注入,而非自己手动 new!

相关文章:

  • 极刻云搜-专业的软件网址搜索引擎
  • Linux421用户、组
  • 移动端动态滑动拨盘选择器【Axure元件库】
  • CMake execute_process用法详解
  • HyperDefect-YOLO:基于超图计算的工业缺陷检测算法解析
  • cdq 系列 题解
  • arkTs:使用Refresh实现下拉刷新功能(含状态提示与动画控制)
  • 并发设计模式之双缓冲系统
  • 基于SpringBoot的心情疗愈平台-项目分享
  • oracle rac时区问题导致远程查询时间不准
  • 报告系统状态的连续日期 mysql + pandas(连续值判断)
  • 【MySQL】数据库安装
  • Python Cookbook-6.6 在代理中托管特殊方法
  • Flowith AI,解锁下一代「知识交易市场」
  • C语言 函数(上)
  • CAD文件如何导入BigemapPro
  • Java:多线程
  • 极刻AI搜v1.0 问一次问题 AI工具一起答
  • Kubernetes相关的名词解释Container(16)
  • Linux:进程:进程控制
  • 赵厚均评《唐诗与唐代园林景观的审美建构研究》|林泉恣探历,风景暂徘徊
  • 净海护渔,中国海警局直属第一局开展伏季休渔普法宣传活动
  • 来上海喝云南咖啡!上海国际咖啡文化节助力咖啡产业破圈出海
  • 七部门联合发布《终端设备直连卫星服务管理规定》
  • 孕妇乘坐高铁突发临产,广西铁路部门协助送医平安产子
  • 事关广大农民利益,农村集体经济组织法5月1日起施行