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管理工具 使
  • windows安装rocketmq

    windows安装rocketmq 问题背景 操作步骤 Lyric 请再给我 一个理由 问题背景 最近有使用rocketmq 为测试方便 在本地安装rocketmq 注意事项 默认已安装java1 8 启动mq必须是1 8版本 我之前使用1
  • 【Linux系统安装RocketMQ并整合到SpringBoot项目】

    Linux系统安装RocketMQ并整合到SpringBoot项目 一 基本概念 1 1 NameServer 1 2 Broker 1 3 Message 1 3 Topic 1 4 Tag 1 5 Queue 1 6 MessageId
  • RocketMQ部署之动态设置JVM启动参数

    这里是weihubeats 觉得文章不错可以关注公众号小奏技术 文章首发 拒绝营销号 拒绝标题党 背景 线上的RocketMQ集群有运行一段时间了 比如测试环境和线上环境的RocketMQ集群部署的机器内存大小肯定不一样 所以可能要写多个部
  • RocketMQ-如何保证顺序消息

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

    1 概念 严格顺序消息模式下 消费者收到的所有消息均是有顺序的 消息有序指的是可以按照消息的发送顺序来消费 FIFO RocketMQ可以严格的保证消息有序 可以分为分区有序或者全局有序 顺序消费的原理解析 在默认的情况下消息发送会采取Ro
  • 报错:ImportError: rocketmq dynamic library not found解决方法

    目录 一 ImportError rocketmq dynamic library not found 二 OSError librocketmq so cannot open shared object file No such file
  • 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消费者端消息列队六种负载均衡算法分析

    在RocketMQ启动的时候会启动负载均衡线程 过程如下 DefaultMQPullConsumerImpl start mQClientFactory start 上面点进去 gt MQClientInstance start rebal
  • 【RocketMQ】消息重试、重试次数设置、死信队列

    文章目录 1 死信队列 1 1 死信特性 1 2 查看死信消息 2 重试次数参数 2 1 Producer端重试 2 2 Consumer端重试 3 1 异常重试 3 2 超时重试 参考 1 死信队列 上一篇 RocketMQ 消息重试中我
  • rocketmq客户端配置

    1 客户端配置 相对于RocketMQ的Broker集群 生产者和消费者都是客户端 2 客户端寻址方式 RocketMQ可以令客户端找到Name Server 然后通过Name Server再找到Broker 如下所示有多种配置方式 优先级
  • 32 Consumer消息零丢失方案:手动提交offset + 自动故障转移

    1 消费者 红包系统 丢失消息的问题 前面两章中 阐述了如何确保订单系统发送出去的消息一定会到达MQ中 而且也能确保了如果消息到达了MQ如何确保一定不会丢失 在整个消息的生产消费中 就剩下消费者这一端的问题了 红包系统 消费者 拿到消息后
  • 1 RocketMQ简介

    简介 RocketMQ是由阿里捐赠给Apache的一款低延迟 高并发 高可用 高可靠的分布式消息中间件 经历了淘宝双十一的洗礼 RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力 同时也具备互联网应用所需的海量消息堆积 高吞吐
  • 【Python】记录一次 Linux + Python + RocketMQ 辛酸历程

    文章目录 安装Python 准备环境 编译安装 遇到问题 安装openssl 重新编译 安装依赖库 准备代码 验证 这是记录一次辛酸的Linux Python RocketMQ使用历程 需求背景是需要验证线上一个RocketMQ服务和里面的
  • 分布式消息队列RocketMQ--事务消息--解决分布式事务的最佳实践

    分布式消息队列RocketMQ 事务消息 解决分布式事务的最佳实践 标签 事务消息exactlyRocketMQKafka分布式消息队列 2016 12 23 22 08 7789人阅读 评论 8 收藏 举报 分类 分布式消息队列Rocke
  • rocketMq介绍和安装

    rocketMq介绍和安装 Mq介绍 MQ MessageQueue 消息队列 队列 是一种FIFO 先进先出的数据结构 消息由生产者发送到MQ进行排队 然后按原来的顺序交由消息的消费者进行处理 QQ和微信就是典型的MQ MQ的作用 主要有
  • RocketMQ的消息优先级

    有些场景 需要应用程序处理几种类型的消息 不同消息的优先级不同 RocketMQ是个先入先出的队列 不支持消息级别或者Topic级别的优先级 业务中简单的优先级需求 可以通过间接的方式解决 下面列举三种优先级相关需求的具体处理方法 第一种
  • RocketMQ消费者可以手动消费但无法主动消费问题,或生成者发送超时

    1 大多数是配置问题 修改rocketmq文件夹broker conf 2 配置与集群IP或本地IPV4一样 重启 在RocketMQ独享实例中支持IPv4和IPv6双栈 主要是通过在网络层面上同时支持IPv4和IPv6协议栈来实现的 Ro
  • RocketMQ源码(26)—DefaultMQPushConsumer事务消息源码【一万字】

    事务消息是RocketMQ的一大特性 其被用来实现分布式事务 关于RocketMQ的事务消息的相关原理的介绍见这篇博客 RocketMQ的分布式事务机制 事务消息 关于事务消息的基本案例看这里 消息事务样例 本文主要介绍RocketMQ的事
  • 阿里架构专家力荐:架构修炼宝典,从基础到精通,让您轻松驾驭技术世界

    前言 作为程序员 确定发展方向和路线至关重要 而架构师则是许多人的追求之一 成为架构师并非易事 需要深厚的技术功底 当然 大厂架构师更具吸引力 但进入大厂并担任这一职位需要学习众多技术 或许你现在对此感到迷茫 但市面上已有多条现成的架构技术

随机推荐

  • 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