系列

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

Topic的存储

Topic的实际存储模型

说明:

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 消息 自定义_rocketMq-Topic创建过程相关推荐

  1. rocketmq 消息 自定义_RocketMQ的消息发送及消费

    RocketMQ消息支持的模式: 消息支持的模式分为三种:NormalProducer(普通同步),消息异步发送,OneWay. 消息同步发送: 普通消息的发送和接收在前面已经演示过了,在前面的案例中 ...

  2. rocketmq 消息 自定义_RocketMQ消息轨迹-设计篇

    RocketMQ 消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹-设计相关. RocketMQ消息轨迹,主要跟踪消息发送.消息消费的轨迹,即详细记录消息各个处理环 ...

  3. rocketmq 消息 自定义_rocketmq中的自定义消息头

    在springboot中使用rocketmq的客户端,有2种方式. 一是使用 org.apache.rocketmq的rocketmq-client 二是,在pom.xml中引用 org.apache ...

  4. rocketmq 消息指定_RocketMq 实际案例–普通消息的发送

    RocketMq 实际案例–普通消息的发送 @(消息中间件)[RocketMq 实例] 学习 rocketMq 最根本的是要先学会用嘛,在创建 rocketMq 的第一个案例的时候,碰到很多坑,可以记 ...

  5. rocketmq 消息 自定义_跟我学RocketMQ[1-4]之消息消费及支持spring

    博客地址:朝·闻·道​www.wuwenliang.net 本文我将继续讲解如何使用DefaultMQPushConsumer对RocketMQ中的消息进行消费,同时在文章的第二部分将继续带领读者朋友 ...

  6. rocketmq 消息删除_RocketMQ源码分析之文件过期删除机制

    1.由于RocketMQ操作CommitLog.ConsumeQueue文件,都是基于内存映射方法并在启动的时候,会加载commitlog.ConsumeQueue目录下的所有文件,为了避免内存与磁盘 ...

  7. 95-25-010-命令-topic 创建过程

    文章目录 1.视界 1. topic 介绍 2.topic 如何创建 3. kafka-topics.sh创建 topic 3.1 createTopic 3.1.1 获取broker和机架信息 3. ...

  8. rocketmq 消息删除_RocketMQ 实现分布式事务,达到数据最终一致性

    作者:江之北来源:https://www.jianshu.com/p/296e0de1b52e 前言 在分布式环境下,经常会有跨服务的事务需求,典型的例子如: 服务A 为账户服务,服务B为包月服务,在 ...

  9. rocketmq怎么保证消息一致性_RocketMQ为什么要保证订阅关系的一致性?

    微信公众号「后端进阶」,专注后端技术分享:Java.Golang.WEB框架.分布式中间件.服务治理等等. 前段时间有个朋友向我提了一个问题,他说在搭建 RocketMQ 集群过程中遇到了关于消费订阅 ...

最新文章

  1. weui 弹出 $.toast(“我是文本“,“text“); 总是带有图标
  2. Android之打造属于自己的侧边栏(SlidingMenu)
  3. NiosII软处理器快速入门- 10分钟学会NiosII(1)
  4. IDEA去除掉虚线,波浪线,和下划线实线的方法
  5. postman发送json格式的post请求
  6. 在国外当程序员是一种什么样的体验
  7. 微信小程序登陆/注册界面及接口开发实战(二)
  8. C++ Dxgi快速截屏并保存为rgb格式和bmp格式完整示例代码
  9. 移动硬盘安装linux,thinkpad sl400笔记本安装vista,双系统
  10. 在linux上使用spi-lcd屏 ST7735
  11. 渐进式jpg转换成基线式 jpg
  12. windows2003序列号
  13. 一个完整推荐系统的设计实现-以百度关键词搜索推荐为例
  14. MATLAB 神经网络NAR时间序列做预测
  15. 富文本数据存储及回显
  16. 小程序云开发支持公众号网页开发了
  17. 移动硬盘坏了,自己搞定解决方案
  18. 夜了,为什么还不想睡
  19. Linux操作系统学习笔记(二十)网络通信之TCP协议
  20. 第二章 搭建Istio

热门文章

  1. 【转】心目中的编程高手
  2. tp5.0 根据经纬度 获取附近信息_php根据前端传递的经纬度获取区域地址信息
  3. ANN神经网络分类2*2矩阵:吸引子和反鞍点cfa-cp
  4. Opensmile 简介
  5. C语言拾零(to be continued)
  6. C语言编程课后训练,C语言编程课后训练20道题.doc
  7. vuecli3配置webpack_vue CLI3的优化
  8. 微信小程序 html css xml,微信小程序 使用towxml解析html流程及踩坑记录
  9. 5.5 SVM补充-机器学习笔记-斯坦福吴恩达教授
  10. 那些生活中的应该知道的知识