09、RocketMQ实战:RocketMQ工作原理

分布式消息队列RocketMQ

3.1)消息的生产

3、 1.1)消息的生产过程;

Producer可以将消息写入到某Broker中的某Queue中,其经历了如下过程:

1、 Producer发送消息之前,会先向NameServer发出获取消息Topic的路由信息的请求;
2、 NameServer返回该Topic的路由表及Broker列表;
3、 Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息;
4、 Produer对消息做一些特殊处理,例如,消息本身超过4M,则会对其进行压缩;
5、 Producer向选择出的Queue所在的Broker发出RPC请求,将消息发送到选择出的Queue;

路由表:实际是一个Map,key为Topic名称,value是一个QueueData实例列表。QueueData并不 是一个Queue对应一个QueueData,而是一个Broker中该Topic的所有Queue对应一个 QueueData。即,只要涉及到该Topic的Broker,一个Broker对应一个QueueData。QueueData中 包含brokerName。简单来说,路由表的key为Topic名称,value则为所有涉及该Topic的 BrokerName列表。

Broker列表:其实际也是一个Map。key为brokerName&#x