当前位置: 首页 > news >正文

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 账户&#xff1a; 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中,模板表达式中的箭头函数是无效的吗?为什么无效?

出现此问题的背景&#xff1a; 我在Angular项目中对一个标签属性绑定了一个箭头函数&#xff0c;编译报错。 在vue或者react或angular中&#xff0c;模板表达式中的箭头函数是无效的吗&#xff1f; 在 Vue、React 或 Angular 中&#xff0c;模板表达式中的箭头函数是无效的。…...

C++11『lambda表达式 ‖ 线程库 ‖ 包装器』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C修行之路 &#x1f383;操作环境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目录 &#x1f307;前言&#x1f3d9;️正文1.lambda表达式1.1.仿函数的使用1.2.lambda表达式的语法1.3.lambda表达式的使用…...

MATLAB算法实战应用案例精讲-【数模应用】漫谈机器学习(四)(附实战案例及代码实现)

目录 机器学习学习路线 学习编写抽象类 固定随机数种子 先加载少量数据...

JavaScript 中松散类型的理解

JavaScript 是一种动态类型语言&#xff0c;它的松散类型是其独特的特性之一。本文将深入探讨 JavaScript 中松散类型的概念以及如何在代码中应用。 引言 JavaScript 是一种强大而灵活的语言&#xff0c;它的松散类型使得变量的类型可以在运行时动态改变。这为开发人员带来了…...

java基于springboot公益帮学网站 新闻发布系统的设计与实现vue

以Java为开发平台&#xff0c;综合利用Java Web开发技术、数据库技术等&#xff0c;开发出公益帮学网站。用户使用版块&#xff1a;可以选择注册并登录&#xff0c;可以浏览信息、可以网上互动、发布文章、内容推荐等。后台管理员管理版块&#xff1a;以管理员身份登录网站后台…...

VMware 安装 Centos7 超详细过程

VMware 安装 Centos7 超详细过程 分类 编程技术 1.软硬件准备 软件&#xff1a;推荐使用 VMware&#xff0c;我用的是 VMware 12 镜像&#xff1a;CentOS6 ,如果没有镜像可以在阿里云下载 centos安装包下载_开源镜像站-阿里云 硬件&#xff1a;因为是在宿主机上运行虚拟化软…...

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独特探索力量的数字化征程

在数字化时代的激流中&#xff0c;Vatee万腾以其独特的科技冒险精神&#xff0c;引领着一场前所未有的数字化征程。这不仅仅是一次冒险&#xff0c;更是对未知的深度探索&#xff0c;将科技的力量推向新的高度。 Vatee万腾在科技领域敢于挑战传统&#xff0c;积极探索未知的可能…...

物联网后端个人第十二周总结

学习工作进度 物联网方面 1.模拟设备通过规则引擎将数据通过mqtt进行转发 在物联网平台上实现模拟设备通过规则引擎将数据通过mqtt进行转发已经全部完成了&#xff0c;所使用的物联网平台在这方面有不少的问题和bug&#xff0c;也可能是没有按照开发者的想法对平台进行使用才导…...

Linux C语言 26-可变参数

Linux C语言 26-可变参数 本节关键字&#xff1a;可变参数、va_list、va_arg、va_end 相关C库函数&#xff1a;va_list、va_arg、va_end 什么是可变参数&#xff1f; C语言中的可变参数是指函数能够接受不定数量的参数。在不确定函数参数时&#xff0c;使用“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 基础知识点附带实例

包括数据绑定和计算属性、条件渲染和列表渲染、事件处理、表单输入处理、生命周期钩子、自定义指令和过滤器、路由和导航以及状态管理&#xff08;如Vuex&#xff09;&#xff1a; <template><div><!-- 条件渲染 --><div v-if"showMessage">…...

【迅搜03】全文检索、文档、倒排索引与分词

全文检索、文档、倒排索引与分词 今天还是概念性的内容&#xff0c;但是这些概念却是整个搜索引擎中最重要的概念。可以说&#xff0c;所有的搜索引擎就是实现了类似的概念才能称之为搜索引擎。而且今天的内容其实都是相关联的&#xff0c;所以不要以为标题上有四个名词就感觉好…...

MySql之索引,视图,事务以及存储过程举例详解

一.数据准备 数据准备可参考下面的链接中的数据准备步骤 MySql之内连接&#xff0c;外连接&#xff0c;左连接&#xff0c;右连接以及子查询举例详解-CSDN博客 &#xff08;如有问题可在评论区留言&#xff09; 二.存储过程 1.定义 存储过程 PROCEDURE &#xff0c;也翻译…...

AR眼镜双目光波导/主板硬件方案

AR(增强现实)技术的发展离不开光学元件&#xff0c;而在其中&#xff0c;光波导和Micro OLED被视为AR眼镜光学方案的黄金搭档。光学元件在AR行业中扮演着核心角色&#xff0c;其成本高昂且直接影响用户体验的亮度、清晰度和大小等因素。AR眼镜的硬件成本中&#xff0c;光机部分…...

告别Keil/IAR:用VS Code+GCC+OpenOCD打造免费高效的ARM MCU开发工作流

1. 为什么选择VS CodeGCCOpenOCD开发ARM MCU&#xff1f; 在嵌入式开发领域&#xff0c;Keil MDK和IAR一直是ARM MCU开发的主流商业IDE。但商业软件的高昂授权费用&#xff08;单套License动辄上万元&#xff09;、封闭的生态系统以及略显陈旧的代码编辑器&#xff0c;让越来越…...

大场景渲染实战:从LOD算法到切换策略的深度解析

1. 为什么大场景必须用LOD技术&#xff1f; 第一次接触智慧城市项目时&#xff0c;我被要求渲染一个包含5万栋建筑的数字孪生场景。当把所有高精度模型直接加载后&#xff0c;帧率直接掉到3FPS——就像用PPT播放动画。这个惨痛教训让我明白&#xff1a;没有LOD的大场景渲染就是…...

Chart.js项目实战:物流运输跟踪系统的终极可视化指南

Chart.js项目实战&#xff1a;物流运输跟踪系统的终极可视化指南 【免费下载链接】awesome A curated list of awesome Chart.js resources and libraries 项目地址: https://gitcode.com/GitHub_Trending/awesome/awesome 在当今快节奏的物流行业中&#xff0c;实时数据…...

s2-pro参数调优实战:Max New Tokens提升长文本连贯性详解

s2-pro参数调优实战&#xff1a;Max New Tokens提升长文本连贯性详解 1. 引言 s2-pro作为Fish Audio开源的专业级语音合成模型镜像&#xff0c;在文本转语音领域展现出强大的能力。它不仅支持基础的文本转语音功能&#xff0c;还能通过参考音频实现音色复用&#xff0c;为语音…...

从GLORYS12数据到npy文件:手把手教你为‘羲和’大模型准备自定义输入数据

从GLORYS12数据到npy文件&#xff1a;为‘羲和’大模型定制数据预处理全流程实战 海洋科研领域正迎来AI驱动的变革浪潮&#xff0c;而数据预处理环节往往成为阻碍研究落地的"最后一公里"。本文将聚焦GLORYS12和GHRSST数据集&#xff0c;手把手演示如何将原始NetCDF文…...

MongoDB 完全指南:从入门到企业级应用的全面总结

一、前言MongoDB 完全指南&#xff1a;从入门到企业级应用的全面总结是后端工程师必须掌握的核心技能。本文从MongoDB出发&#xff0c;覆盖开发中最实用的知识点&#xff0c;配有完整可运行的 SQL/代码示例。二、索引设计与优化2.1 索引类型选择-- 基础索引 CREATE INDEX idx_u…...

PolyWorks插件开发实战指南——从编译到调用的全流程解析

1. PolyWorks插件开发环境搭建 搞PolyWorks插件开发&#xff0c;第一步得把环境折腾明白。我当年第一次接触这玩意儿的时候&#xff0c;被各种版本兼容性问题折腾得够呛。现在回头看&#xff0c;其实只要注意几个关键点就能少走弯路。 先说说开发工具的选择。PolyWorks官方文档…...

前端福音!VuReact v1.6.0 版本更新,让 Vue 转 React 更高效、更可靠

前端开发者必备的 Vue 转 React 编译工具 VuReact 迎来 v1.6.0 版本更新&#xff0c;重点强化 Vue3 转 React 类型安全与转换稳定性&#xff0c;支持多项转换&#xff0c;完善多项关键问题。新增能力亮点多此次更新新增能力拉满。编译解析阶段能精准收集 SFC 元数据&#xff0c…...

Qt5.12.12安卓开发环境搭建:Windows下避开cmdline-tools版本坑的保姆级教程

Qt5.12.12安卓开发环境搭建&#xff1a;Windows下避开cmdline-tools版本坑的保姆级教程 在Windows平台上搭建Qt5.12.12的安卓开发环境&#xff0c;看似简单的流程却暗藏玄机。许多开发者按照常规教程操作&#xff0c;却在最后一步被QtCreator的报错拦住了去路。本文将聚焦这个最…...

医学影像预处理还有必要吗?从APTOS2019看端到端模型如何‘吃掉’传统步骤

医学影像预处理&#xff1a;从手工优化到端到端学习的范式迁移 在Kaggle APTOS2019糖尿病视网膜病变检测竞赛中&#xff0c;一个有趣的现象引发了计算机视觉领域的讨论&#xff1a;冠亚军团队均未采用传统图像预处理流程。这与2015年同类型竞赛中Ben Graham团队依赖精心设计的预…...