美文网首页rocketMq理论与实践
rocketMq-Topic创建过程

rocketMq-Topic创建过程

作者: 晴天哥_王志 | 来源:发表于2018-03-19 08:48 被阅读162次

Topic可以理解为在rocketMq体系当中作为一个逻辑消息组织形式,一般情况下一类业务消息会申请一个topic来实现业务之间隔离。

Topic的存储

Topic的实际存储模型

说明:

    该图分享自: RocketMQ概念模型

    Topic是一个逻辑上的概念,实际上在每个broker上以queue的形式保存,也就是说每个topic在broker上会划分成几个逻辑队列,每个逻辑队列保存一部分消息数据,但是保存的消息数据实际上不是真正的消息数据,而是指向commit log的消息索引。

    Topic创建的时候可以用集群模式去创建(这样集群里面每个broker的queue的数量相同),也可以用单个broker模式去创建(这样每个broker的queue数量可以不一致)。

    每个broker上的角色是等同的,也就是说每个broker上面的queue保存了该topic下一部分消息,注意是一部分而不是全量消息。

rocketMq的命令行工具

rocketMq的CLI

说明:

    在rocketMq编译后的bin目录下有一个mqadmin的工具,该工具作为rocketMq的CLI工具对外提供,使用时候可以通过sh mqadmin -h 或者sh mqadmin command -h查看用法。

    updateTopic和deleteTopic是实际中操作topic的命令。

rocketMq的topic工具

topic操作的CLI

说明:

    创建topic需要指定的参数,

    -b 指定broker上创建topic

    -c 指定cluster创建topic

    -n 指定namesrv地址,cluster模式下必须从namesrv获取broker地址

    -t topic的名字标志

    -r/w 读写队列的个数,建议相等

    -p queue的读写权限

    -o 待研究不确定是不是保证全局有序消息的配置

topic的创建过程

rocketMq创建过程

说明:

    topic的创建过程涉及到3个组件,分别是mqadmin、broker、namesrv。

    整个创建过程是mqadmin->broker->namesrv。

    mqadmin通知broker创建topic和对应的queue信息。

    broker转发通知namesrv保存topic和broker的原信息,同时在本地持久化一份topic配置。

    broker在这个时候不真正创建本地的队列信息

mqadmin操作过程

updateTopic的参数

说明:

    参见 UpdateTopicSubCommand类

    注册参数和updateTopic显示帮助是一致的

集群和broker模式下创建topic

说明:

    支持cluster模式下创建topic和支持broker模式下创建topic

通知broker创建topic

说明:

    通知broker创建topic。

集群模式下获取broker地址

说明:

    集群模式下首先通过namesrv获取所有的broker的master地址,然后通知每个broker去创建topic,每个broker的创建过程跟指定单个broker是一致的。

broker操作过程

broker处理topic创建消息入口

说明:

    参见AdminBrokerProcessor类

broker本地保存topic配置并转发namesrv

说明:

    broker本地通过updateTopicConfig保存topic的配置信息并持久化

    broker通过registerBrokerAll通知namesrv保存topic信息

broker向namesrv注册topic

说明:

    broker通知namesrv注册该broker下的topic信息,具体的namesrv地址是在registerBrokerAll内部访问namesrv获取的。

namesrv操作过程

namesrv处理topic创建消息

说明:

    参见DefaultRequestProcessor类

namesrv解析topic信息

说明:

    参见DefaultRequestProcessor类

namesrv保存注册topic信息

说明:

    参见RouteInfoManager类

相关文章

  • rocketMq-Topic创建过程

    Topic可以理解为在rocketMq体系当中作为一个逻辑消息组织形式,一般情况下一类业务消息会申请一个topic...

  • Ajax创建过程

    1,创建XMLhttprequest对象,异步调用对象 2,创建一个新的HTTP请求,并指定该HTTP请求的方法、...

  • 创建ajax过程

    (1)创建XMLHttpRequest对象,也就是创建一个异步调用对象. (2)创建一个新的HTTP请求,并指定该...

  • ionic创建过程

    1.创建ionic项目 在命令提示符下运行命令 ionic start appName tabs 注:blank...

  • XmlBeanFactory创建过程

    配置文件信息 TestCase代码如下 进入XmlBeanFactory的构造方法中, 该构造方法代码如下 在该构...

  • 创建存储过程

  • Activty创建过程

    1.创建相应得activity java类,并直接或者间接继承activity父类 2.在androidMainf...

  • Context创建过程

    Context意为上下文,是一个应用程序环境信息的接口,Android中的四大组件都会涉及Context,在开发中...

  • Bitmap创建过程

    前言 在安卓中我们图片相关的操作一定离不开Bitmap位图,可见Bitmap在图像显示中的位置是多么的重要,而且B...

  • 图解Java对象创建过程

    图解Java对象创建过程 java对象创建过程

网友评论

    本文标题:rocketMq-Topic创建过程

    本文链接:https://www.haomeiwen.com/subject/typyqftx.html