RocketMQ Topic+Tag过滤机制解析

RabbitMQ,RocketMQ,Kafka 消息模型对比分析 消息模型 消息队列的演进 消息队列模型 早期的消息队列是按照”队列”的数据结构来设计的。 生产者(Producer)产生消息,进行入队操作,消费者(Consumer)接收消息,就是出队操作,存在于服务端的消息容器就称为消息队列。 当然消费者也可能不止一个,存在的多个消费者是竞争的关系,消息被其中的一个消费者消费了,其它的消费者就拿不到消息了。 发布订阅模型 如果一个人消息想要同时被多个消费者消费,那么上面的队列模式就不适用了,于是又引出了一种新的模式,发布订阅模型。 在发布- 阅读详情

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。

📙不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。

Java程序员廖志伟

💡在这个美好的时刻,笔者不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

优快云

🌟 RocketMQ Topic+Tag 过滤机制详解

🍊 概述

RocketMQ的Topic+Tag过滤机制是一种高效的消息路由策略,它允许用户根据消息的Topic和Tag进行精确匹配和过滤,从而实现对消息的精细化管理。这种机制在提高消息处理效率、降低系统复杂度方面发挥着重要作用。

🍊 Topic与Tag的定义

🎉 Topic

Topic在RocketMQ中类似于数据库中的表,用于对消息进行分类。每个Topic可以包含多个消息队列,生产者可以将消息发送到指定的Topic,而消费者可以订阅一个或多个Topic来接收消息。

🎉 Tag

Tag是RocketMQ中的消息标签,用于对消息进行更细粒度的分类。每个Topic可以包含多个Tag,生产者在发送消息时可以指定Tag,消费者可以订阅特定的Tag来接收消息。

🍊 Topic+Tag过滤的优势

🎉 提高消息消费效率

通过Tag选择器,RocketMQ可以在消息存储和消费时快速过滤掉不需要的消息,从而提高消息消费效率。

🎉 灵活的消息路由

Topic+Tag过滤允许用户根据消息的Tag进行灵活的消息路由,将消息发送到不同的消息队列或消费者。

🎉 优化资源利用

通过消息分类和筛选,RocketMQ可以将消息发送到合适的消息队列或消费者,从而优化资源利用。

🎉 支持复杂消息筛选

RocketMQ支持多种类型的Tag选择器,可以满足复杂的消息筛选需求。

🍊 实现原理

🎉 消息发送时

消息发送者将消息发送到指定的Topic,并设置一个或多个Tag。RocketMQ将消息存储到对应的Topic和Tag。

🎉 消息存储时

RocketMQ将消息存储到对应的Topic和Tag,以便后续进行过滤和路由。

🎉 消息消费时

消息消费者订阅一个或多个Topic和Tag,RocketMQ根据消费者的订阅信息,将匹配的消息发送给消费者。

🍊 应用场景

🎉 消息分类

将不同类型的消息发送到不同的Topic,并通过Tag进行进一步分类。

🎉 消息隔离

将敏感消息发送到特定的Topic,并通过Tag进行隔离。

🎉 消息筛选

根据消息的Tag进行筛选,只处理符合条件的消息。

🎉 消息路由

根据消息的Tag将消息路由到不同的消息队列或消费者。

🍊 配置与使用

🎉 Topic配置

在RocketMQ中创建Topic,并设置Topic的属性,如消息存储时间、消息大小等。

🎉 Tag配置

为Topic添加Tag,并设置Tag的属性,如Tag的名称、描述等。

🎉 Tag选择器配置

配置Tag选择器,如精确匹配、模糊匹配和正则表达式匹配。

🎉 消费端配置

配置消费者,指定订阅的Topic和Tag,以及Tag选择器。

🍊 性能优化

🎉 Tag数量控制

合理控制Tag的数量,避免过多Tag导致性能下降。

🎉 Tag选择器优化

选择合适的Tag选择器,如精确匹配、模糊匹配和正则表达式匹配。

🎉 消费端负载均衡

合理配置消费端,实现负载均衡,提高系统性能。

🍊 常见问题

🎉 Tag冲突

确保每个Topic的Tag唯一,避免Tag冲突。

🎉 Tag选择器错误

检查Tag选择器配置是否正确,确保匹配到正确的消息。

🎉 消息过滤失败

检查消息的Topic和Tag是否正确,以及Tag选择器配置是否正确。

🍊 与其他RocketMQ特性的结合

🎉 消息队列

Topic+Tag过滤可以与消息队列结合,实现消息的分类、筛选和路由。

🎉 消息事务

Topic+Tag过滤可以与消息事务结合,确保消息的一致性和可靠性。

🎉 消息广播

Topic+Tag过滤可以与消息广播结合,实现消息的广播和订阅。

🎉 消息持久化

Topic+Tag过滤可以与消息持久化结合,确保消息的持久性和可靠性。

🎉 技术描述扩充

RocketMQ的Topic+Tag过滤机制是一种基于消息分类和标签的过滤技术,它通过为消息分配Topic和Tag,实现对消息的精细化管理。这种机制具有以下特点:

  • 高效率:通过Tag选择器,RocketMQ可以在消息存储和消费时快速过滤掉不需要的消息,从而提高消息过滤效率。
  • 灵活性:用户可以根据实际需求,灵活地设置Topic和Tag,实现消息的灵活处理。
  • 可扩展性:RocketMQ的Topic+Tag过滤机制支持多种类型的Tag选择器,可以满足复杂的消息筛选需求。
  • 可靠性:RocketMQ的Topic+Tag过滤机制与RocketMQ的其他特性(如消息队列、消息事务等)紧密结合,确保消息处理的可靠性和一致性。
特点描述
高效率通过 Tag 选择器,RocketMQ 可以在消息存储和消费时快速过滤掉不需要的消息,从而提高消息过滤效率。
灵活性用户可以根据实际需求,灵活地设置 Topic 和 Tag,实现消息的灵活处理。
可扩展性RocketMQ 的 Topic+Tag 过滤机制支持多种类型的 Tag 选择器,可以满足复杂的消息筛选需求。
可靠性RocketMQ 的 Topic+Tag 过滤机制与 RocketMQ 的其他特性(如消息队列、消息事务等)紧密结合,确保消息处理的可靠性和一致性。

优快云

博主分享

📥博主的人生感悟和目标

Java程序员廖志伟

📙经过多年在优快云创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。

面试备战资料

八股文备战
场景描述链接
时间充裕(25万字)Java知识点大全(高频面试题)Java知识点大全
时间紧急(15万字)Java高级开发高频面试题Java高级开发高频面试题

理论知识专题(图文并茂,字数过万)

技术栈链接
RocketMQRocketMQ详解
KafkaKafka详解
RabbitMQRabbitMQ详解
MongoDBMongoDB详解
ElasticSearchElasticSearch详解
ZookeeperZookeeper详解
RedisRedis详解
MySQLMySQL详解
JVMJVM详解

集群部署(图文并茂,字数过万)

技术栈部署架构链接
MySQL使用Docker-Compose部署MySQL一主二从半同步复制高可用MHA集群Docker-Compose部署教程
Redis三主三从集群(三种方式部署/18个节点的Redis Cluster模式)三种部署方式教程
RocketMQDLedger高可用集群(9节点)部署指南
Nacos+Nginx集群+负载均衡(9节点)Docker部署方案
Kubernetes容器编排安装最全安装教程

开源项目分享

项目名称链接地址
高并发红包雨项目https://gitee.com/java_wxid/red-packet-rain
微服务技术集成demo项目https://gitee.com/java_wxid/java_wxid

管理经验

【公司管理与研发流程优化】针对研发流程、需求管理、沟通协作、文档建设、绩效考核等问题的综合解决方案:https://download.youkuaiyun.com/download/java_wxid/91148718

希望各位读者朋友能够多多支持!

现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

别再死记硬背了!用一张图+大白话彻底搞懂RocketMQ的Topic、Queue和Tag 本文通过生活化比喻和可视化图表,深入浅出地解析了RocketMQ的核心概念Topic、Queue和Tag。将RocketMQ比作报刊分发系统,详细阐述了消息分类、负载均衡和过滤机制,帮助开发者轻松掌握这一分布式消息中间件的核心架构。文章还提供了最佳配置策略和常见问题排查指南,助力高效应用RocketMQ。 阅读详情

相关推荐

RocketMQ核心概念精讲:从Group、Topic到Queue与Tag的实战解析

本文深入解析RocketMQ核心概念,包括Group、Topic、Queue与Tag的实战应用。通过电商系统案例,详细讲解生产者组与消费者组的配置技巧、Topic设计哲学、Queue负载均衡策略以及Tag的高级过滤方法,帮助开发者高效使用RocketMQ提升消息处理性能。

weixin_34199764的博客 212

rocketmq一个topic对用多个tag时tag的定义方式

在使用rocketmq时,发现消费者只能受到部分消息(消费者tag里定义的tag),查看监控器总是显示消息被过滤,解决方式(注意private String tag = "tag1";) private String consumerGroup = "consumerTopic"; private String namesrvAddr = "127.0.0.1:9876"; private String topic = "supplyTopic"; private St

m0_46608027的博客 9223

别再死记硬背了!用一张图彻底搞懂RocketMQ里的Topic、Queue和Tag

第一次接触RocketMQ时,那些抽象的概念就像一堆散落的拼图碎片——Topic、Queue、Tag、Producer Group、Consumer Group...每个词单独看都能理解,但它们之间的关系却让人摸不着头脑。这种设计既保证了各业务系统的解耦,又通过Tag实现了精确的消息路由。本文将通过一张精心设计的架构图,将这些碎片拼接成一幅完整的画面,让您真正理解RocketMQ内部的消息流转机制。Topic是开发者看到的逻辑层面,而Queue是系统内部的物理实现。

weixin_29214559的博客 287

Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

关键在于最后这个tag的hashcode值,这个 tag 的作用是过滤消息,假如一个 Consumer 订阅了 Topic1 中的 Tag1,那这个 Consumer 拉取消息时,首先从 Name Server 获取订阅关系,得到当前 Consumer 订阅的所有 tag 的 hashcode 集合 codeSet。1.订阅的Topic相同,或者订阅的Topic相同 tag也相同,或者Topic相同,tag的顺序也相同。最后一个问题,怎么看是不是存在订阅关系不一致的 现象?不想看官网的,直接看结论。

Chen_leilei的博客 2800

RocketMQ 消费者

RocketMQ 消费者

26857259 297

phpstudy自定义安装mysql8.3并启动

下载压缩包文件然后按下面的图片一步一步操作选择版本,选择第一个压缩包文件,下载下载完成后,解压到phpstudy环境目录下

互联网碎碎念 2802

RocketMq相同topic不同tag踩坑

RocketMq在我们项目中一般用于系统间的解耦,有时候会使用不同的Consumer消费不同的tag,但是博主昨天踩了个坑。 情景如下: 两个consumer接收相同的topic,不同tag的消息,但是当处方系统发送tagA的消息的时候,consumer2消费了,本来consumer2应该是要丢弃掉的,但是却消费了,主要问题就是配置了相同的Group。 RocketMq消费者如果针对同一个topic不同的tag配置了相同的group,会导致消息消费混乱。 解决方法: 针对不同的tag配置不同的group即

zh991993144的博客 3114

Tomcat源码:Acceptor与Poller、PollerEvent

前文中我们介绍到NioEndpoint的start方法启动了Acceptor与Poller这两个异步线程来处理连接请求,本文我们就来接着介绍这两个组件。目录前言一、Acceptor1、构造方法2、run方法LimitLatchNioChannel二、Poller与PollerEvent2、pollerregisterruneventsprocessKey。

CRUD工程师 2066

RabbitMq学习——Springboot整合rabbitmq之topic模糊匹配配置(四)

一、前言 rabbitmq中的交换机类中,topic作为一种很常用的转发模式。 在之前的博文中,除了fanout模式外,其他的有关转发器和消息队列的我们都有指定routingkey的写法,在进行配置消息转发器和消息队列时,都是按照具体的routingkey实现关联。 但上述操作限制太死板,如何能够进行动态匹配呢?接下来我们引入topic模式。 二、配置项 2.1、代码配置项编写前的准备 上图...

专注写bug 1621

手把手教你用思岚RPLIDAR C1激光雷达实现简单环境扫描(树莓派4B+Ubuntu22.04)

本文详细介绍了如何在树莓派4B(Ubuntu 22.04系统)上驱动思岚RPLIDAR C1激光雷达,从硬件连接、权限配置、SDK编译到运行示例程序,最终实现环境扫描数据的可视化。通过手把手教程,帮助开发者和爱好者快速上手激光雷达应用,构建简单的环境扫描图。

j2k3l4的博客 1134

嵌入式存储入门:Emmc控制器与设备工作原理全解析(附Synopsys/Arasan架构图)

本文深入解析了嵌入式系统中Emmc控制器与设备的工作原理,重点剖析了其作为CPU与存储设备桥梁的核心架构。通过对比Synopsys和Arasan两家主流IP厂商的控制器设计,详细阐述了DMA引擎与FIFO缓冲模块如何协同工作以提升数据传输效率,并提供了从硬件PCB布局到驱动调试的实战指南,帮助硬件工程师与开发者优化系统性能。

weixin_29248653的博客 148

RocketMQ核心知识点整理,收藏再看!

一类消息的集合,消息发送者将一类消息发送到一个主题中,例如订单模块将订单发送到中,而用户登录时,将登录事件发送到中。消息设置的标志,用于同一Topic下区分不同类型的消息,可以根据Topic+Tag实现消息的精细化生产和消费。消息消费组,一个消费组拥有多个消费者,消费组首先在启动时需要订阅需要消费的Topic。一个Topic可以有很多队列,消息都存在Queue上,默认是一个Topic在同一个Broker组中是4个。由于一个Topic可能会有很多的队列,消息发送到哪个队列上?

2301_78976656的博客 1618

避开这些坑!Kaggle数据集下载常见问题及解决方案(含Header Editor插件配置)

本文针对Kaggle数据集下载过程中的常见难题,提供了系统性的解决方案。重点解决了验证码无法显示、API安装失败、密钥文件配置错误及下载命令执行问题,并详细介绍了使用Header Editor插件配置请求头以绕过验证码障碍的实战方法,帮助用户高效获取数据。

weixin_29043895的博客 303

RocketMq主题Topic与队列机制:售货柜多设备消息隔离设计

设计决策选择理由门店隔离方式消息Key + Consumer内过滤避免Topic爆炸,逻辑隔离够用设备消息顺序hashKey=deviceId路由到同一Queue出货和库存变动需保序消息类型区分Tag同类设备消息共享Topic,减少Topic数消费并行度Queue数 = 预计最大Consumer实例数避免实例空闲浪费幂等保障订单ID/设备ID+时间戳做去重防止Rebalance导致重复消费日志类消息独立Topic + 单向发送和业务消息隔离,互不影响。

爱片闲串,爱钓鱼,爱中医,爱分享 201

Clawdbot完 整安装与使⽤指南(保姆级教程)

Clawdbot 是⼀款开源个⼈ AI 智能体(Personal AI Agent),核⼼优势为本地部署+系统级执⾏+全渠道交互,可通过聊天⼯具(Telegram/WhatsApp 等)下达指令,⾃动完成⽂件整理、代码部署、⽇程同步等任务,所有数据本地存储,隐私零泄露。截⾄2026年 1 ⽉,GitHub 星标突破 4 万+,⽀持 Windows/Mac/Linux/云服务器多平台。

A1609926242的博客 1619

Unity之ASE+ShaderGraph+VFX入门到精通 目录

这里是ASE+ShaderGraph+VFX从入门到精通专栏的目录,不停更新中,有问题随时留言或者私信。

TxNet 2841

别再死记硬背了!用一张图+大白话,彻底搞懂RocketMQ里的Topic、Queue和Tag

本文通过快递站的生动比喻,深入浅出地解析了RocketMQ中的核心概念Topic、Queue和Tag。Topic如同小区,Queue是楼栋,Tag则是包裹标签,帮助开发者轻松理解消息队列的分发机制。文章还提供了RocketMQ的实战配置技巧和常见问题解决方案,助力提升消息处理效率。

weixin_28363123的博客 359

数学工具箱:Clarke与Park变换

本文详细解析了FOC(磁场定向控制)中的核心数学工具——Clarke变换与Park变换。首先阐述了坐标变换的必要性:将复杂的三相交流系统简化为直流系统,便于精确控制。Clarke变换将三相静止坐标系转换为两相静止坐标系,减少变量数量;Park变换进一步将两相静止坐标系转换为两相旋转坐标系,实现交流量到直流量的转换。文章提供了两种变换的数学公式、物理意义图解及C语言实现代码,并简要介绍了逆变换过程。这些变换为电机控制提供了关键的数学基础,后续将结合GD32F303的FPU特性进行优化实现。

汽车电子软件领域知识分享 182

rocketmq存储消息mysql_RocketMQ消息消费以及进度管理解析

最近 ONS 消息堆积的很严重,并且经常发现部分几乎没有消息消费的消费者也提示堆积,所以有必要深入了解一下RocketMQ 的设计思路,来看看堆积量如何计算,以及如何正确的使用 Topic 以及 Consumer 等组件。产生的问题背景在于,由于一开始对于RocketMQ不够了解,同时足够懒得原因,导致我们所有业务都仅适用了一个topic,所有业务线通过订阅不同的tag来进行消费,本次深入了解后将...

weixin_32589387的博客 675

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Apache RocketMQ消息过滤规则优化:减少无效消息传输

在分布式系统中,消息中间件(Message Middleware)作为解耦服务的核心组件,其性能直接影响整个系统的吞吐量。Apache RocketMQ作为一款高性能分布式消息中间件,广泛应用于金融、电商等关键业务场景。然而,随着业务复杂度提升,**无效消息传输**成为制约系统性能的隐形瓶颈——消费者频繁接收并丢弃不符合业务规则的消息,不仅浪费网络带宽,还导致Broker和Consumer的CPU...

gitblog_01138的博客 389

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RocketMq 基础介绍(一)

RocketMq ( cluster:集群模式),分布式事务,两阶段提交。 简介 大纲 rocketMq 优势 集群环境

nameIsHG的博客 511

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RocketMQ 概述

消息中间件(Message Queue,MQ)是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。

Dailyblue的专栏 3688

面试被问到RocketMq,我懵了!

今天主要讲了RocketMq的基本架构以及消息是怎么发送,存储和消费的,要掌握NameServer、Broker、Producer、Consumer各自的职责是什么,在消息这方面都做了什么努力,比如保证高可用、保证顺序、保证分布式、实现过滤、实现去重以及怎么做负载均衡等等。作者:写代码的强哥链接:https://juejin.cn/post/6873844931945824270来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

weixin_62421895的博客 277

RocketMQ 客户端编程模型深度解析与实战

本文深入解析RocketMQ客户端编程模型,从基础收发流程到高级特性应用。首先回顾RocketMQ的分布式架构与Topic-MessageQueue模型,详细介绍生产者/消费者的标准开发步骤。重点剖析消息确认机制(三种发送方式、消费状态确认)、广播模式、消息过滤(Tag/SQL)、顺序消息实现原理以及延迟消息特性。针对企业级应用场景,提供SpringBoot整合实践与关键注意事项,帮助开发者构建高效可靠的消息系统。文章强调特性选择需结合实际业务需求,如核心业务推荐同步发送,有序消息需注意重试策略等。

慢慢 565

《Apache RocketMQ 从入门到实战》阅读笔记

《Apache RocketMQ 从入门到实战》阅读笔记

道友 340

《RocketMQ实战与进阶》 02 RocketMQ 核心概念扫盲篇

RocketMQ核心概念解析:本文系统梳理了RocketMQ的核心组件和消息模型。部署架构包含NameServer(路由注册中心)、Broker(消息存储服务器)和Client(生产者和消费者);消息订阅采用发布-订阅模式,支持集群和广播两种消费模式;详细介绍了队列负载算法、消费重平衡机制及两种消费模型(并发消费和顺序消费);还讲解了事务消息、定时消息和消息过滤等特性。这些基础概念为后续深入学习RocketMQ奠定了重要基础。

断剑重铸之日 骑士归来之时 535
上一篇: RabbitMQ Return机制深度解析
下一篇: Kafka核心概念与架构解析
Java开发廖志伟
博客等级 码龄2年 3491粉丝 1534原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值