分布式消息队列RocketMQ
3.1)消息的生产
3.1.1)消息的生产过程
Producer可以将消息写入到某Broker中的某Queue中,其经历了如下过程:
-
Producer发送消息之前,会先向NameServer发出获取消息Topic的路由信息的请求
-
NameServer返回该Topic的路由表及Broker列表
-
Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息
-
Produer对消息做一些特殊处理,例如,消息本身超过4M,则会对其进行压缩
-
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,value为BrokerData。一个Broker对应一 个BrokerData实例,对吗?不对。一套brokerName名称相同的Master-Slave小集群对应一个 BrokerData。BrokerData中包含brokerName及一个map。该map的key为bro

本文介绍了RocketMQ消息的生产过程,包括Producer如何获取Topic路由信息、选择Queue、处理消息以及发送到Broker的详细步骤。同时,讨论了两种Queue选择算法:轮询算法和最小投递延迟算法,分析了它们的优缺点和对消息投递性能的影响。
最低0.47元/天 解锁文章
701

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



