RocketMq 主题(TOPIC)生产级应用
RocketMq是阿里出品(基于MetaQ)的开源中间件,已捐赠给Apache基金会并成为Apache的顶级项目。基于java语言实现,十万级数据吞吐量,ms级处理速度,分布式架构,功能强大,扩展性强。
官方文档
Linux 安装 RocketMq-CSDN博客
Springboot 集成 RocketMq(入门)-CSDN博客
1.定义
主题是 RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。 主题的作用主要如下:
1.1 定义数据的分类隔离
RocketMQ 建议将不同业务类型的数据拆分到不同的主题中管理,通过主题实现存储的隔离性和订阅隔离性。
1.2 定义数据的身份和权限
RocketMQ 的消息本身是匿名无身份的,同一分类的消息使用相同的主题来做身份识别和权限关理。
2.模型关系

主题是 RocketMQ 的顶层存储,所有消息资源的定义都在主题内部完成,但主题是一个逻辑概念,并不是实际的消息容器。
主题内部由多个队列组成,消息的存储和水平扩展能力最终是由队列实现的;并且针对主题的所有约束和属性设置,最终也是通过主题内部的队列来实现。
3.内部属性
3.1 主题名称
定义:主题的名称,用于标识主题,主题名称集群内全局唯一。
3.2 队列列表
定义:队列作为主题的组成单元,是消息存储的实际容器,一个主题内包含一个或多个队列,消息实际存储在主题的各队列内。
写队列:发送消息时根据写队列数量返回路由信息。
读队列:消费时按照读队列的个数返回路由信息。
3.3 消息类型
定义:主题所支持的消息类型。
Normal:普通消息。
FIFO:顺序消息。
Delay:定时/延时消息。
Transaction:事务消息.
约束:RocketMQ 从5.0版本开始,支持强制校验消息类型,即每个主题只允许发送一种消息类型的消息,这样可以更好的运维和管理生产系统,避免混乱。为保证向下兼容4.x版本行为,强制校验功能默认关闭,推荐通过服务端参数 enableTopicMessageTypeCheck 开启校验。
4.主题的类型

普通主题:这里的topic是用户创建主题。
重试主题:这里的topic是消息发送失败时候系统为之创建的主题。
死信主题:这里的topic类似垃圾箱,无法从中生产或者消费消息。
系统主题:这里的topic是Brocker启动后就自动生成的主题。
5.生产中使用建议
5.1 关闭自动创建主题的功能
主题属于顶层资源和容器,拥有独立的权限管理、可观测性指标采集和监控等能力,创建和管理主题会占用一定的系统资源。因此,生产环境需要严格管理主题资源,请勿随意进行增、删、改、查操作。
5.2 手动控制台创建

5.2.1 队列
当读队列数量 >= 写队列数量业务可以正常进行。
当读队列数量 = 写队列数量效果最佳。
如果想调整读写队列的数量,首先减少写队列数量再减少读队列的数量(确保已读完)。
假设创建了4个写队列2个读队列则有两个队列的消息无法被消费,反之则存在两个空闲的读队列。
RocketMq不直接将读写队列设置相同直接目的是为了安全的收缩队列数量,间接的为了安全的扩容。
5.2.2 perm
6:读写状态,当前队列允许读取消息和写入消息。
4:只读状态,当前队列只允许读取消息,不允许写入消息。
2:只写状态,当前队列只允许写入消息,不允许读取消息。
0:不可读写状态,当前队列不允许读取消息和写入消息。
5.3 单一主题只收发一种类型消息
主题的设计原则为通过主题隔离业务,不同业务逻辑的消息建议使用不同的主题。同一业务逻辑消息的类型都相同,因此,对于指定主题,应该只收发同一种类型的消息。
相关文章:
RocketMq 主题(TOPIC)生产级应用
RocketMq是阿里出品(基于MetaQ)的开源中间件,已捐赠给Apache基金会并成为Apache的顶级项目。基于java语言实现,十万级数据吞吐量,ms级处理速度,分布式架构,功能强大,扩展性强。 官方…...
队列实现栈VS栈实现队列
目录 【1】用队列实现栈 思路分析 易错总结 Queue.c&Queue.h手撕队列 声明栈MyStack 创建&初始化栈myStackCreate 压栈myStackPush 出栈&返回栈顶元素myStackPop 返回栈顶元素myStackTop 判断栈空否myStackEmpty 释放空间myStackFree MyStack总代码…...
C/C++: 统计整数
【问题描述】 输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。 【输入形式】 从标准输入读取输入。第一行只有一个数字N(1≤N≤10000),代表整数的个数。以后的N行…...
docker容器生成镜像并上传个人账户
登录到 Docker Hub 账户: docker login这将提示你输入你的 Docker Hub 账户名和密码。 为容器创建镜像 docker commit <容器名或容器ID> <你的用户名>/<镜像名:标签>例子 docker commit my_container yourusername/my_image:latest推送镜像到…...
hdlbits系列verilog解答(exams/m2014_q4g)-48
文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本次我们将一次创建多个逻辑门,对两个输入a和b通过组合逻辑实现七种不同的输出: out_and: a and bout_or: a or bout_xor: a xor bout_nand: a nand bout_nor: a nor bout_xnor: a xnor bout_anotb: a and-no…...
在vue或者react或angular中,模板表达式中的箭头函数是无效的吗?为什么无效?
出现此问题的背景: 我在Angular项目中对一个标签属性绑定了一个箭头函数,编译报错。 在vue或者react或angular中,模板表达式中的箭头函数是无效的吗? 在 Vue、React 或 Angular 中,模板表达式中的箭头函数是无效的。…...
C++11『lambda表达式 ‖ 线程库 ‖ 包装器』
✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.lambda表达式1.1.仿函数的使用1.2.lambda表达式的语法1.3.lambda表达式的使用…...
MATLAB算法实战应用案例精讲-【数模应用】漫谈机器学习(四)(附实战案例及代码实现)
目录 机器学习学习路线 学习编写抽象类 固定随机数种子 先加载少量数据...
JavaScript 中松散类型的理解
JavaScript 是一种动态类型语言,它的松散类型是其独特的特性之一。本文将深入探讨 JavaScript 中松散类型的概念以及如何在代码中应用。 引言 JavaScript 是一种强大而灵活的语言,它的松散类型使得变量的类型可以在运行时动态改变。这为开发人员带来了…...
java基于springboot公益帮学网站 新闻发布系统的设计与实现vue
以Java为开发平台,综合利用Java Web开发技术、数据库技术等,开发出公益帮学网站。用户使用版块:可以选择注册并登录,可以浏览信息、可以网上互动、发布文章、内容推荐等。后台管理员管理版块:以管理员身份登录网站后台…...
VMware 安装 Centos7 超详细过程
VMware 安装 Centos7 超详细过程 分类 编程技术 1.软硬件准备 软件:推荐使用 VMware,我用的是 VMware 12 镜像:CentOS6 ,如果没有镜像可以在阿里云下载 centos安装包下载_开源镜像站-阿里云 硬件:因为是在宿主机上运行虚拟化软…...
03:2440--UART
目录 一:UART 1:概念 2:工作模式 3:逻辑电平 4:串口结构图 5:时间的计算 二:寄存器 1:简单的UART传输数据 A:GPHCON--配置引脚 B:GPHUP----使能内部上拉编辑 C: UCON0---设置频率115200 D: ULCON0----数据格式8n1 E:发送数据 A:UTRSTAT0 B:UTXHO--发送数据输…...
Vatee万腾的科技冒险:Vatee独特探索力量的数字化征程
在数字化时代的激流中,Vatee万腾以其独特的科技冒险精神,引领着一场前所未有的数字化征程。这不仅仅是一次冒险,更是对未知的深度探索,将科技的力量推向新的高度。 Vatee万腾在科技领域敢于挑战传统,积极探索未知的可能…...
物联网后端个人第十二周总结
学习工作进度 物联网方面 1.模拟设备通过规则引擎将数据通过mqtt进行转发 在物联网平台上实现模拟设备通过规则引擎将数据通过mqtt进行转发已经全部完成了,所使用的物联网平台在这方面有不少的问题和bug,也可能是没有按照开发者的想法对平台进行使用才导…...
Linux C语言 26-可变参数
Linux C语言 26-可变参数 本节关键字:可变参数、va_list、va_arg、va_end 相关C库函数:va_list、va_arg、va_end 什么是可变参数? C语言中的可变参数是指函数能够接受不定数量的参数。在不确定函数参数时,使用“char *format, …...
Gin 学习笔记02-参数获取
Gin 参数获取 1、获取url 参数2、获取动态 url 参数3、获取 form 表单数据 1、获取url 参数 Query()GetQuery()QueryMap()DefaultQuery() package mainimport ("fmt""github.com/gin-gonic/gin""net/http" )func _query(c *gin.Context) {// 1…...
Uniapp Vue3 基础知识点附带实例
包括数据绑定和计算属性、条件渲染和列表渲染、事件处理、表单输入处理、生命周期钩子、自定义指令和过滤器、路由和导航以及状态管理(如Vuex): <template><div><!-- 条件渲染 --><div v-if"showMessage">…...
【迅搜03】全文检索、文档、倒排索引与分词
全文检索、文档、倒排索引与分词 今天还是概念性的内容,但是这些概念却是整个搜索引擎中最重要的概念。可以说,所有的搜索引擎就是实现了类似的概念才能称之为搜索引擎。而且今天的内容其实都是相关联的,所以不要以为标题上有四个名词就感觉好…...
MySql之索引,视图,事务以及存储过程举例详解
一.数据准备 数据准备可参考下面的链接中的数据准备步骤 MySql之内连接,外连接,左连接,右连接以及子查询举例详解-CSDN博客 (如有问题可在评论区留言) 二.存储过程 1.定义 存储过程 PROCEDURE ,也翻译…...
AR眼镜双目光波导/主板硬件方案
AR(增强现实)技术的发展离不开光学元件,而在其中,光波导和Micro OLED被视为AR眼镜光学方案的黄金搭档。光学元件在AR行业中扮演着核心角色,其成本高昂且直接影响用户体验的亮度、清晰度和大小等因素。AR眼镜的硬件成本中,光机部分…...
告别Keil/IAR:用VS Code+GCC+OpenOCD打造免费高效的ARM MCU开发工作流
1. 为什么选择VS CodeGCCOpenOCD开发ARM MCU? 在嵌入式开发领域,Keil MDK和IAR一直是ARM MCU开发的主流商业IDE。但商业软件的高昂授权费用(单套License动辄上万元)、封闭的生态系统以及略显陈旧的代码编辑器,让越来越…...
大场景渲染实战:从LOD算法到切换策略的深度解析
1. 为什么大场景必须用LOD技术? 第一次接触智慧城市项目时,我被要求渲染一个包含5万栋建筑的数字孪生场景。当把所有高精度模型直接加载后,帧率直接掉到3FPS——就像用PPT播放动画。这个惨痛教训让我明白:没有LOD的大场景渲染就是…...
Chart.js项目实战:物流运输跟踪系统的终极可视化指南
Chart.js项目实战:物流运输跟踪系统的终极可视化指南 【免费下载链接】awesome A curated list of awesome Chart.js resources and libraries 项目地址: https://gitcode.com/GitHub_Trending/awesome/awesome 在当今快节奏的物流行业中,实时数据…...
s2-pro参数调优实战:Max New Tokens提升长文本连贯性详解
s2-pro参数调优实战:Max New Tokens提升长文本连贯性详解 1. 引言 s2-pro作为Fish Audio开源的专业级语音合成模型镜像,在文本转语音领域展现出强大的能力。它不仅支持基础的文本转语音功能,还能通过参考音频实现音色复用,为语音…...
从GLORYS12数据到npy文件:手把手教你为‘羲和’大模型准备自定义输入数据
从GLORYS12数据到npy文件:为‘羲和’大模型定制数据预处理全流程实战 海洋科研领域正迎来AI驱动的变革浪潮,而数据预处理环节往往成为阻碍研究落地的"最后一公里"。本文将聚焦GLORYS12和GHRSST数据集,手把手演示如何将原始NetCDF文…...
MongoDB 完全指南:从入门到企业级应用的全面总结
一、前言MongoDB 完全指南:从入门到企业级应用的全面总结是后端工程师必须掌握的核心技能。本文从MongoDB出发,覆盖开发中最实用的知识点,配有完整可运行的 SQL/代码示例。二、索引设计与优化2.1 索引类型选择-- 基础索引 CREATE INDEX idx_u…...
PolyWorks插件开发实战指南——从编译到调用的全流程解析
1. PolyWorks插件开发环境搭建 搞PolyWorks插件开发,第一步得把环境折腾明白。我当年第一次接触这玩意儿的时候,被各种版本兼容性问题折腾得够呛。现在回头看,其实只要注意几个关键点就能少走弯路。 先说说开发工具的选择。PolyWorks官方文档…...
前端福音!VuReact v1.6.0 版本更新,让 Vue 转 React 更高效、更可靠
前端开发者必备的 Vue 转 React 编译工具 VuReact 迎来 v1.6.0 版本更新,重点强化 Vue3 转 React 类型安全与转换稳定性,支持多项转换,完善多项关键问题。新增能力亮点多此次更新新增能力拉满。编译解析阶段能精准收集 SFC 元数据,…...
Qt5.12.12安卓开发环境搭建:Windows下避开cmdline-tools版本坑的保姆级教程
Qt5.12.12安卓开发环境搭建:Windows下避开cmdline-tools版本坑的保姆级教程 在Windows平台上搭建Qt5.12.12的安卓开发环境,看似简单的流程却暗藏玄机。许多开发者按照常规教程操作,却在最后一步被QtCreator的报错拦住了去路。本文将聚焦这个最…...
医学影像预处理还有必要吗?从APTOS2019看端到端模型如何‘吃掉’传统步骤
医学影像预处理:从手工优化到端到端学习的范式迁移 在Kaggle APTOS2019糖尿病视网膜病变检测竞赛中,一个有趣的现象引发了计算机视觉领域的讨论:冠亚军团队均未采用传统图像预处理流程。这与2015年同类型竞赛中Ben Graham团队依赖精心设计的预…...
