RocketMQ 的消息发送流程是怎样的?

RocketMQ消息发送流程主要分为三个阶段:

  1. 生产者发送消息:生产者构造消息对象,并通过MQProducer发送至Broker。
    • 构造消息:org.apache.rocketmq.common.message.MessageExt
    • 发送消息:org.apache.rocketmq.client.producer.DefaultMQProducer#send
  2. Broker接收消息:Broker的SocketServer接收生产者消息,并写入CommitLog进行持久化。
    • SocketServer接收消息:org.apache.rocketmq.broker.processor.SendMessageProcessor#run
    • 消息持久化:org.apache.rocketmq.broker.latency.BrokerFixedThreadPool#submitSendMessage
  3. 生产者接收响应:生产者接收Broker的响应消息,根据响应类型进行重试或发送下一条消息。
    • 响应消息:SendResult
    • 处理响应:org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl#sendDefaultImpl

消息发送代码主要位于:

  1. org.apache.rocketmq.client.producer:生产者发送消息相关类。
  2. org.apache.rocketmq.broker.processor:Broker接收消息相关处理器。
  3. org.apache.rocketmq.broker.latency:Broker消息持久化线程池相关类。
  4. org.apache.rocketmq.store:实现消息持久化与CommitLog相关类。