RocketMQ 事务消息半消息清理:Half Message 堆积导致 Broker 磁盘告警?自动补偿机制!
做过分布式事务开发的朋友肯定都遇到过这个问题:使用 RocketMQ 的事务消息时,由于网络抖动、服务宕机、消费者超时等原因,部分 Half Message(半消息)无法被正确处理,导致在 Broker 上不断堆积。这不仅占用磁盘空间,严重时还会触发磁盘告警,影响整个消息队列的稳定性。 我之前就遇到过这样一个案例:某天凌晨,监控告警显示 RocketMQ Broker 的磁盘使用率突然飙升至 85%,马上就要触达 90% 的告警阈值。排查后发现,是某个服务的数据库在凌晨进行大批量数据迁移时,部分事务消息的本地事务执行失败,但由于网络重试机制的问题,相关的 Half Message 没有被正确回滚,大批量堆积在了 Broker 上。 今天我们就来聊聊 RocketMQ 事务消息 Half Message 的自动清理方案,让您的系统远离磁盘告警的困扰。 Half Message 的产生与堆积原因 1. 事务消息的执行流程 首先,让我们回顾一下 RocketMQ 事务消息的完整流程: ┌─────────────────────────────────────────────────────....