RocketMQ 的消息确认机制(ACK)是保障消息可靠性的核心机制,分为生产者发送确认和消费者消费确认两部分。以下是详细解析及关键源码分析:

一、生产者消息发送确认机制
1. 机制说明
- 同步发送:生产者发送消息后阻塞等待 Broker 返回
SendResult,包含消息状态(SEND_OK、FLUSH_DISK_TIMEOUT等)。 - 异步发送:通过回调函数
SendCallback处理成功或异常。 - 单向发送:不关心发送结果,无确认机制。
- 重试机制:默认同步发送重试 2 次(可配置
retryTimesWhenSendFailed)。
2. 源码解析
- 核心类:
DefaultMQProducerImpl - 关键方法:
sendDefaultImpl()private SendResult sendDefaultImpl(Message msg, final CommunicationMode communicationMode, ...) { // 选择消息队列(负载均衡) MessageQueue mq = this.selectOneMessageQueue(topicPublishInfo, lastBrokerName); // 实际发送逻辑 sendResult = this.sendKernelImpl(msg, mq, communicationMode, ...); // 处理结果或异常,触发重试 }- 发送结果处理:根据
communicationMode处理同步/异步逻辑。 - 异常处理:
- 发送结果处理:根据


3万+

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



