RocketMQ原理详解

rocketMQ的producer模块

消息如何发送出去

一个消息如何通过MQ发送过程:

  • 通过消息的topic拿到topic发布信息(TopicPublishInfo),如果TopicPublishInfo不存在,则通过通信模块发送消息向namesrv去拿broker的信息以及消息队列信息(msgQueue)。
  • 根据拿到的发布信息去选择发送的消息队列,策略是通过轮询的方式,每次的队列编号为上一次加1,达到上限回到0。
  • 根据获取的broker名称得到具体的地址,对消息进行压缩,将消息状态置为“待发送”,检查钩子都是否有效。
  • 生成消息请求头,将消息体拼装上,调用通信模块进行发送