博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rocketMq-producer介绍
阅读量:6937 次
发布时间:2019-06-27

本文共 892 字,大约阅读时间需要 2 分钟。

producer介绍

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

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

producer的发送过程

img_706a8e1ef58286d472f57877ac8813a6.png
rocketMq发送时序图

img_7017bb907f62d3183b0fe803dddd8086.png
rocketMq发送消息活动图

img_89e7db2d032f05b908c46daa3100e160.png
rocketMq发送消息过程

说明:

    核心逻辑参见DefaultMQProducerImpl类

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

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

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

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

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

生成TopicPublishInfo过程

img_2ce348b86f5b4cfaecef6b589792f581.png
TopicPublishInfo生成逻辑
img_072dbd5fb23619697f573c2676eca52b.png
TopicPublishInfo生成代码

说明:

    参见MQClientInstance类

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

SelectOneMessageQueue过程

img_d41199b70fbcb86ca5bde4ced1ed269c.png
选择MessageQueue逻辑

img_5449688f915999cc3c1dbeaf3b306756.png
选择MessageQueue逻辑

producer的定时任务

img_726738339715fd6916373077f03bf29c.png
producer的定时任务

说明:

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

producer的初始化过程

img_7804936828fdeb059cb32bbe28ef4d9c.png
producer初始化过程I
img_d425f988f461f982a65a38beb4345c6a.png
producer初始化过程II

说明:

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

转载地址:http://npbnl.baihongyu.com/

你可能感兴趣的文章
NOSQL分类
查看>>
VUE学习遇到的问题及解决方法(一)
查看>>
Python中lambda的用法
查看>>
E036-rpmdb open failed
查看>>
基于结构化平均感知机的分词器Java实现
查看>>
IPFS是什么?
查看>>
机器学习:从入门到晋级
查看>>
安卓constraintLayout中app:srcCompat设置的图片显示不出来
查看>>
nginx 安装在ubuntu上
查看>>
iOS地图选址
查看>>
Shpinx在PHPCMS里的使用及配置
查看>>
Linux Oracle Rac 10G 搭建& Patch
查看>>
Apache与Nginx网络模型对比
查看>>
Java 二重循环实现对象去重
查看>>
[Unity3d]socket通信 切换到web版本时报错SecurityException解决办法
查看>>
修改windows service的启动类型
查看>>
快速构建Windows 8风格应用9-竖直视图
查看>>
Chrome浏览器设置不缓存
查看>>
YII2出现SQLSTATE[HY000] [2002] No such file or director
查看>>
搭建nginx+3*tomcat环境 实现session共享
查看>>