RocketMQ消息发送流程主要分为三个阶段:
- 生产者发送消息:生产者构造消息对象,并通过MQProducer发送至Broker。
- 构造消息:org.apache.rocketmq.common.message.MessageExt
- 发送消息:org.apache.rocketmq.client.producer.DefaultMQProducer#send
- Broker接收消息:Broker的SocketServer接收生产者消息,并写入CommitLog进行持久化。
- SocketServer接收消息:org.apache.rocketmq.broker.processor.SendMessageProcessor#run
- 消息持久化:org.apache.rocketmq.broker.latency.BrokerFixedThreadPool#submitSendMessage
- 生产者接收响应:生产者接收Broker的响应消息,根据响应类型进行重试或发送下一条消息。
- 响应消息:SendResult
- 处理响应:org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl#sendDefaultImpl
消息发送代码主要位于:
- org.apache.rocketmq.client.producer:生产者发送消息相关类。
- org.apache.rocketmq.broker.processor:Broker接收消息相关处理器。
- org.apache.rocketmq.broker.latency:Broker消息持久化线程池相关类。
- org.apache.rocketmq.store:实现消息持久化与CommitLog相关类。