RocketMQ 作为高性能、可扩展的分布式消息中间件,广泛应用于电商、金融、物流等场景。然而,在大规模使用中,仍可能遇到一些问题:消息丢失、消息重复、消息积压、消息顺序异常、事务消息失败等。本文将从原理出发,结合实践,给出详细的解决方案。
一、消息丢失问题
1. 可能原因
-
Broker 崩溃或磁盘故障
-
消息未刷盘就崩溃(SYNC_FLUSH 未开启或异步刷盘未及时同步)
-
-
消息发送失败未重试
-
Producer 网络波动或 Broker 不可达
-
-
消费端 ACK 失败
-
消费者在消费后未正确提交 offset
-
2. 解决方案
(1)可靠消息存储策略
-
同步刷盘(SYNC_FLUSH):
brokerFlushDiskType=SYNC_FLUSH
确保消息写入磁盘立即生效,保证不丢消息。
-
主从同步:
-
RocketMQ 支持主从同步(SYNC/ASYNC)
-
推荐生产环境至少配置 一主一从,主宕机从接管
-
(2)Producer 端重试机制
DefaultMQProducer producer = new

最低0.47元/天 解锁文章
1013

被折叠的 条评论
为什么被折叠?



