rocketMq-producer介绍

系列

rocketMq概念介绍

rocketMq-namesrv介绍

rocketMq-Topic创建过程

rocketMq-producer介绍

rocketMq-consumer介绍

rocketMq - rebalance介绍

rocketMq - 并发消费过程

rocketMq - 串行消费过程

rocketMq-broker介绍

rocketMq-broker消息存储介绍

rocketMq - commitLog

rocketMq - index介绍

rocketMq-延迟消息介绍

rocketMq-事务消息介绍

rocketMq消息查询

rocketMq和kafka的架构区别

rocketMq - master/slave同步


producer介绍

producer在rocketMq扮演的角色是消息的发送过程,其实宏观上来讲其实就包括两大块,分别是消息的发送以及一堆定时任务。

producer在发送消息过程中涉及到发送队列的选择(topic、broker、queue),所以只要在整个发送过程中理清楚这几者之间的关系,就能理解整个发送过程,当然其中包括 非严格顺序消息、顺序消息、事务消息。这里只讲非顺序消息、顺序消息,不包括事务消息。

producer的发送过程


rocketMq-producer介绍_第1张图片
rocketMq发送时序图


rocketMq-producer介绍_第2张图片
rocketMq发送消息活动图
rocketMq-producer介绍_第3张图片
rocketMq发送消息过程

说明:

    核心逻辑参见DefaultMQProducerImpl类

    rocketMq发送消息过程由以下组成:组装消息&获取topicPubInfo&选择队列&发送消息。

    组装消息:发送消息的组装,包括设置topic&tag&延时&是否有序等等。

    生成topicPublishInfo:定期或按需从namesrv同步该topic的broker信息

    选择队列:从topicPubishInfo中按照轮询(roundrobin)选取队列,i++%(队列长度),顺序消息根据自定义的selector按照固定的key进行hash选择同一个队列

    发送消息:同步/异常方式发现on个消息给broker


生成TopicPublishInfo过程

rocketMq-producer介绍_第4张图片
TopicPublishInfo生成逻辑
rocketMq-producer介绍_第5张图片
TopicPublishInfo生成代码

说明:

    参见MQClientInstance类

    图片备注中已经写明了MessageQueue的生成过程


SelectOneMessageQueue过程

rocketMq-producer介绍_第6张图片
选择MessageQueue逻辑


rocketMq-producer介绍_第7张图片
选择MessageQueue逻辑


producer的定时任务

rocketMq-producer介绍_第8张图片
producer的定时任务

说明:

    关键是前3个定时任务,后面两个一般是consumer端会使用,这个类是公用的。


producer的初始化过程

rocketMq-producer介绍_第9张图片
producer初始化过程I
rocketMq-producer介绍_第10张图片
producer初始化过程II

说明:

    参见DefaultMQProducerImpl类,具体的功能在上图中已备注。


你可能感兴趣的:(rocketMq-producer介绍)