Rocketmq 消息过滤简述

2023-11-11

Rocketmq消息过滤是指在消息消费时,消费者Consumer可以对某一主题下的消息按照某种过滤规则进行过滤,只消费自己感兴趣的消息。Rocketmq同时支持在Broker端和Consumer端做消息过滤。

Broker端过滤

Broker端过滤只会将消息消费者感兴趣的消息发送给消息消费者,减少了无用消息的网络传递,提高了传输效率。

Broker端过滤更详细的又可以分为Tag过滤、表达式过滤、类模式过滤。

Tag过滤

说明:消息发送时可以指定该消息的Tag号,消息存储到CommitLog后会异步转发构建ConsumeQueue,ConsumeQueue条目中包含消息Tag的hashcode值,消费者消费消息会从broker拉取消息,拉取时指定消息必须带有目标Tag值,那么遍历ConsumeQueue条目时会判断条目中Tag的hashcode值是否等于目标Tag的hashcode值,如果相等,说明可能是消费者感兴趣的消息。但是,因为比较的是Tag的hashcode值,所以实际的Tag可能不一样,所以消息拉取到消费者端后还要比较Tag值,才能保证是消费者正真感兴趣的消息。

优点:仅仅根据ConsumeQueue就可以进行过滤,过滤完之后才去CommitLog拉取实际的消息内容返回给消费者,效率比较高。

缺点:消费者端需要做进一步的比对才可以确定是否是感兴趣的消息。

属性表达式过滤

说明:同样在消息发送时指定消息的扩展属性,消息存储到CommitLog,消息拉取时,根据Topic从ConsumeQueue中取出消息的偏移量之后,还需要根据偏移量去CommitLog中遍历,判断某个消息的属性是否匹配属性表达式,匹配才会返回消费者。

优点:可以设置多个自定义属性值,过滤可以做到多样化。并且属性值直接比较可以确保返回的消息都是消费者感兴趣的消息。

缺点:仍然需要遍历Topic下的所有消息,判断是否匹配属性表达式,有一定的开销。

类过滤

说明:在Broker端可以运行一个或者多个过滤服务器FilterServer,消费者可以自定义消息过滤实现类并将其上传至FilterServer,那么消费者的拉取命令会中间经过一层FilterServer,Broker返回的消息先在FilterServer端做一次过滤之后再返回消费者。

优点:过滤逻辑完全由消费者把控,想怎么过滤怎么过滤,只要在java类里面能实现出来就行。

缺点:需要运行java类,过滤类太多的情况下消耗Broker性能。

Consumer端过滤

说明:消息拉取回来后在Consumer端做过滤,不感兴趣的消息不消费。

优点:过滤逻辑完全由消费者把控。

缺点:大量不感兴趣的消息会传输到消费者端,白白占用带宽。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rocketmq 消息过滤简述 的相关文章

  • RocketMQ学习笔记(实操篇)

    目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使
  • K8S部署rocketmq单机和集群

    K8S部署rocketmq单机和集群 版本 Rocketmq介绍 RocketMQ 的核心概念 2 1 Topic Queue tags 2 2 Producer 与 Producer Group 2 3 Consumer 与 Consum
  • RocketMq客户端日志参数设置

    使用的RocketMq版本为4 7 1 RocketMq的客户端日志打印 Logger的创建代码在org apache rocketmq client log ClientLogger中 部分代码如下 public static final
  • windows安装rocketmq

    windows安装rocketmq 问题背景 操作步骤 Lyric 请再给我 一个理由 问题背景 最近有使用rocketmq 为测试方便 在本地安装rocketmq 注意事项 默认已安装java1 8 启动mq必须是1 8版本 我之前使用1
  • MQClientException: CODE: 208  DESC: query message by key finished, but no message.

    2019 05 15 10 19 31 401 INFO closeChannel close the connection to remote address 127 0 0 1 10911 result true 2019 05 15
  • rockemq创建topic

    sh mqadmin updateTopic n sms pro 007 9876 sms pro 008 9876 c DefaultCluster t smsFrontSmsMq 10 w 4 r 4
  • RocketMQ-如何保证顺序消息

    1 简介 实际开发中会有以下场景 需要保证一组消息的生产顺序与消费顺序相同 例如 监听数据库表单条数据的的多次修改 需要保证监听者最终得到的消息顺序和数据库表对单条数据的修改顺序一样 网购平台创建订单的过程一般都是异步实现 订单创建和支付流
  • 消息中间件 RocketMQ 源码解析:Message拉取&消费(上)

    摘要 原创出处 http www iocoder cn RocketMQ message pull and consume first 芋道源码 欢迎转载 保留摘要 谢谢 本文主要基于 RocketMQ 4 0 x 正式版 1 概述 2 C
  • RocektMQ社区"每周直播分享第8期"如约而至

    各位同学 RocektMQ社区 每周直播分享第8期 如约而至 分享题目 RocketMQ消息的过滤和重试实现原理详解 直播方式 钉钉群直播方式 群号 21791227 分享时间 2019 01 24 20 00 21 30 本周四 分享讲师
  • CVE-2023-33246 Apache RocketMQ 命令注入漏洞复现及分析

    CVE 2023 33246 Apache RocketMQ 命令注入漏洞复现及分析 0x0 威胁情报 漏洞编号 CVE编号 CVE 2023 33246 漏洞评估 危害评级 高危 漏洞类型 RCE 公开程度 PoC已公开 利用条件 1 在
  • centos安装rocketmq

    1 下载 https github com apache rocketmq releases 2 环境 jdk1 8 0 211 maven3 6 3 3 安装 gt tar xf rocketmq all 4 7 1 tar gz gt
  • 【RocketMQ】NameServer总结

    NameServer是一个注册中心 提供服务注册和服务发现的功能 NameServer可以集群部署 集群中每个节点都是对等的关系 没有像ZooKeeper那样在集群中选举出一个Master节点 节点之间互不通信 服务注册 Broker启动的
  • 分析rocketmq-client产生大量rocketmq_client.log日志文件的原因处理方案

    源码 public static final String CLIENT LOG USESLF4J rocketmq client logUseSlf4j public static final String CLIENT LOG ROOT
  • rocketmq客户端配置

    1 客户端配置 相对于RocketMQ的Broker集群 生产者和消费者都是客户端 2 客户端寻址方式 RocketMQ可以令客户端找到Name Server 然后通过Name Server再找到Broker 如下所示有多种配置方式 优先级
  • 22道常见RocketMQ面试题以及答案

    面试宝典到手 搞定面试 不再是难题 系列文章传送地址 请点击本链接 1 RocketMQ是什么 2 RocketMQ有什么作用 3 RoctetMQ的架构 4 RoctetMQ的优缺点 8 消息过滤 如何实现 9 消息去重 如果由于网络等原
  • 【Python】记录一次 Linux + Python + RocketMQ 辛酸历程

    文章目录 安装Python 准备环境 编译安装 遇到问题 安装openssl 重新编译 安装依赖库 准备代码 验证 这是记录一次辛酸的Linux Python RocketMQ使用历程 需求背景是需要验证线上一个RocketMQ服务和里面的
  • RocketMQ的架构及概念

    RocketMQ就是一个消息中间键用于实现异步传输与解耦 那什么是消息中间键呢 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流 并基于数据通信来进行分布式系统的集成 通过提供消息传递和消息排队模型 它可以在分布式环境下扩展进程间
  • RocketMQ第四篇 Rocket集群配置

    在实际开发中一般都会使用docker安装rocketMQ docker安装rocketmq如下 docker安装配置rocketmq docker安装rocketmq docker pull foxiswho rocketmq server
  • RocketMQ概论

    目录 前言 1 概述 2 下载安装 集群搭建 3 消息模型 4 如何保证吞吐量 4 1 消息存储 4 1 1顺序读写 4 1 2 异步刷盘 4 1 3 零拷贝 4 2 网络传输 前言 RocketMQ的代码示例在安装目录下有全套详细demo
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

    漏洞简介 RocketMQ 5 1 0及以下版本 在一定条件下 存在远程命令执行风险 RocketMQ的NameServer Broker Controller等多个组件外网泄露 缺乏权限验证 攻击者可以利用该漏洞利用更新配置功能以Rock

随机推荐

  • C51——IO口配置

    I O口配置 STC89C51RC RD 系列单片机所有I O口均 新增P4口 有3种工作类型 准双向口 弱上拉 标准8051输出模式 仅为输入 高阻 或开漏输出功能 STC89C51RC RD 系列单片机的P1 P2 P3 P4 上电复位
  • 使用pandas将numpy中的数组数据保存为csv文件的方法

    如果想保存numpy中的数组元素到一个文件中 在这方面 pandas工具的使用就会让工作方便很多 下面通过一个简单的小例子来演示一下 首先 创建numpy中的数组 import numpy as np import pandas as pd
  • 面向商用活体检测平台的鲁棒性评估

    摘要 活体检测技术已经成为日常生活中的重要应用 手机刷脸解锁 刷脸支付 远程身份验证等场景都会用到这一技术 但如果攻击者利用虚假视频生成技术生成逼真的换脸视频来攻击上述场景的活体检测系统 将会对这些场景的安全性产生巨大的威胁 针对这个问题使
  • 【Oracle】导入/导出DMP文件

    一 导入dmp文件 1 打开cmd 输入sqlplus 录入账户密码 2 exit 3 输入指令 C Users Administrator gt imp hsa nt person hsa nt person 127 0 0 1 orcl
  • 使用腾讯云盲水印服务进行图片水印添加和提取的一个Python Demo

    目录 前言 起因 可略过 代码 addWatermark py extractWatermark py 运行效果 加水印 提取水印 最后 前言 首先 本文写于 2021 5 17 也许在未来的某个时间点 腾讯云盲水印服务的 Python S
  • 5.时间序列分析

    一 定义 时间序列分析 Time Series Analysis 是指将原来的数据分解为四部分来看 长期趋势 secular trend T 季节趋势 seasonal variation S 循环变动 cyclical variation
  • 西门子博图指令(计数器操作)

    计数器操作 综述 加计数 介绍 程序 程序演示 减计数 介绍 程序 程序演示 加减计数 介绍 程序 程序演示 源程序 综述 主要介绍博图V15中计数器功能块指令的相关操作 仿真PLC为1200系列 1 加计数 介绍 接口参数 声明 数据类型
  • Qt对Excel表格的自动化调用汇总(新建、打开和保存)

    为便于实时采集并保存数据到excel 需要调用QAxObject 首先定义变量excel workbooks workbook worksheets worksheet range 等 ifndef EXCEL H define EXCEL
  • riscv 指令集与寄存器

    文章目录 指令集 寄存器分类 RV64 和 RV32 有什么不同总览 指令集分类 base optional 内嵌汇编 参考文章 指令集 RV32指令集 和 RV64指令集 并不是单独的 一类指令集的集合 而很多类指令集的集合 RV32指令
  • Oracle12c中空格引发的ORA-01516问题

    2019 年 1 月 29 日 zabbix 显示一个索引表空间告警 所以登录服务器查看 10 02 22 SQL gt col file name for a50 10 02 42 SQL gt select file id tables
  • Java BigInteger用法详解

    在用C或者C 处理大数时感觉非常麻烦 但是在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类 至于两个类的对象能表示最大范围不清楚 理论上能够表示无线大的数 只要计算机内存足够大 这两个类都在java
  • springboot项目避免脏读影响修改数据的几种方法

    文章目录 1 通过sql层面进行行锁 2 通过cas原则 compareAndSwapInt 进行自旋 3 通过synchronized锁住查询跟修改语句 4 通过分布式锁redission 1 通过sql层面进行行锁 1 Update时
  • 引用计数法和可达性分析算法

    一 引用计数法 给对象中添加一个引用计数器 每当有一个地方引用它时 计数器值就加1 当引用失效时 计数器值就减1 任何时刻计数器为0的对象就是不能再被使用的 引用计数法实现简单 判定效率也很高 但是它很难解决对象之间相互循环引用的问题 如下
  • 谈谈我接触过的几个前端框架。

    1 justified gallery框架 jQuery justified gallery插件允许你在一个合理的空间内创建响应式 无限滚动 高品质的画廊 并填充满所有的空间 插件主要特性 无需在意像素 使用一种先进的算法无需剪裁图像进行自
  • 学位真的那么重要吗?上交大博士亲述科研心路,获4万高赞,网友:这是知乎最好的回答...

    点击 凹凸域 马上关注 更多内容 请置顶或星标 学位真的那么重要吗 上交大博士亲述科研心路 获4万高赞 网友 这是知乎最好的回答 十三 转载整理自 时间规划局 量子位 报道 都说读博就像一场赌博 一入红门深似海 从此半点不由人 还时不时曝出
  • JetBrains IntelliJ IDEA Ultimate 2017.2.5 官方旗舰版 windows/mac/Linux

    intellij idea是一款非常强大的java开发工具 软件内置智能代码助手 会对代码进行自动检测 可以大幅度减少程序员的工作量 而且还支持多线程调试 您所有创建的工程都会被记录下来 方便以后查询和使用 功能还有很多等你来体验 因其强大
  • android APK签名过程之CERT.RSA分析

    CERT RSA包含了公钥信息和发布机构信息 具体信息获取可以参考 手动给android APK签名 中第四部分的验证过程
  • 朋友创业2年,估值已达10亿,正招贤纳士,不错的机会

    公司主要成员是来自高通中国的IC创业团队 公司成立两年 估计已经达到10亿人民币 成长速度惊人 截止目前 公司全职员工约60人 预计2022年底公司将成长至100人规模 团队成员中80 以上有硕士或博士学历 其中核心研发人员分别来自清华 北
  • 如何绘制用例图 - How to Draw Use Case Diagram

    如何绘制用例图 use case diagram 用例图是一种UML图 它允许您建模系统功能 即目标 i e goal 以及与这些功能交互的参与者 actor 您可以在 Visual Paradigm 中绘制用例图 并使用事件编辑器 flo
  • Rocketmq 消息过滤简述

    Rocketmq消息过滤是指在消息消费时 消费者Consumer可以对某一主题下的消息按照某种过滤规则进行过滤 只消费自己感兴趣的消息 Rocketmq同时支持在Broker端和Consumer端做消息过滤 Broker端过滤 Broker