当前位置: 代码迷 >> 综合 >> 【RocketMQ源码】三、Producer 源码学习
  详细解决方案

【RocketMQ源码】三、Producer 源码学习

热度:90   发布时间:2023-09-21 00:05:59.0

一、启动流程

1.1 默认启动类解析

【RocketMQ源码】三、Producer 源码学习【RocketMQ源码】三、Producer 源码学习

查看这个start 的引用可以发现它是基于 DefaultMQProducer 这个类创建的,即需要通过这个类创建 Producer 并发送消息

【RocketMQ源码】三、Producer 源码学习

【RocketMQ源码】三、Producer 源码学习

同时可以看到这个类中定义了各种消息的发送方法和默认参数

【RocketMQ源码】三、Producer 源码学习

【RocketMQ源码】三、Producer 源码学习

 

1.2 默认参数解析

参数名称 参数作用
producerGroup 生产者所属组
createTopicKey 默认Topic
defaultTopicQueueNums 默认主题在每一个Broker队列数量
sendMsgTimeout 发送消息默认超时时间,默认3s
compressMsgBodyOverHowmuch 消息体超过该值则启用压缩,默认4k
retryTimesWhenSendFailed 同步方式发送消息重试次数,默认为2,总共执行3次
retryTimesWhenSendAsyncFailed 异步方法发送消息重试次数,默认为2
retryAnotherBrokerWhenNotStoreOK 消息重试时选择另外一个Broker时,是否不等待存储结果就返回,默认为false
maxMessageSize 允许发送的最大消息长度,默认为4M

 

 

 

 

 

 

 

 

 

 

 

1.3 代码跟踪

代码:DefaultMQProducerImpl#start

【RocketMQ源码】三、Producer 源码学习

点开 MQClientManager,可以看到整个JVM中只有一个 MQClientManager 实例,维护一个MQClientInstance缓存表

【RocketMQ源码】三、Producer 源码学习

【RocketMQ源码】三、Producer 源码学习

查看MQClientInstance,发现其封装了RocketMQ网络处理API,是消息生产者和消息消费者与NameServer、Broker打交道的网络通道

【RocketMQ源码】三、Producer 源码学习

【RocketMQ源码】三、Producer 源码学习

 

二、消息发送