建站视频教程网/新闻式软文

建站视频教程网,新闻式软文,淄博的大型网站建设,什么职位做网站前言 本篇文章比较简单,分别介绍RocketMQ支持几种过滤机制,其原理和使用。 RocketMQ 提供了多种消息过滤机制,帮根据业务需求高效筛选消息,可以减少不必要的消息传输和处理。以下是其核心过滤机制及使用场景: 1. Tag…

前言

本篇文章比较简单,分别介绍RocketMQ支持几种过滤机制,其原理和使用。

RocketMQ 提供了多种消息过滤机制,帮根据业务需求高效筛选消息,可以减少不必要的消息传输和处理。以下是其核心过滤机制及使用场景:


1. Tag 标签过滤

  • 原理
    每个消息发送时可附加一个 Tag(字符串标签),消费者订阅时指定一个或多个 Tag,Broker 会过滤出匹配 Tag 的消息投递给消费者。
  • 使用方式
    • 生产者:发送消息时设置 setTags
      Message msg = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes());
      
    • 消费者:订阅时指定 Tag(支持 * 表示全部,|| 表示或关系)。
      consumer.subscribe("TopicTest", "TagA || TagB");
      
  • 特点
    • 高效:Broker 端过滤,性能损耗低。
    • 简单:仅支持精确匹配,适用于简单分类场景(如订单状态分类)。

2. SQL92 属性过滤

  • 原理
    基于消息的 自定义属性(Key-Value),通过 SQL 表达式进行复杂条件过滤(如数值比较、逻辑运算)。需开启 Broker 的 enablePropertyFilter=true
  • 使用方式
    • 生产者:为消息添加自定义属性。
      Message msg = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes());
      msg.putUserProperty("a", "10");
      msg.putUserProperty("b", "5");
      
    • 消费者:订阅时编写 SQL 表达式。
      consumer.subscribe("TopicTest", MessageSelector.bySql("a > 5 AND b = '5'"));
      
  • 特点
    • 灵活:支持复杂逻辑(如 >, <, BETWEEN, IS NULL 等)。
    • 性能损耗:相比 Tag 过滤略高,需评估表达式复杂度。

3. 类过滤(Class Filter)

  • 原理
    允许用户自定义 Java 类实现过滤逻辑,Broker 加载该类并调用其方法判断消息是否投递。适用于高度定制化的过滤需求。
  • 使用方式
    • 实现接口:编写类实现 org.apache.rocketmq.common.filter.MessageFilter
      public class CustomFilter implements MessageFilter {@Overridepublic boolean match(MessageExt msg, FilterContext context) {// 自定义过滤逻辑return msg.getUserProperty("region").equals("CN");}
      }
      
    • 部署类:将编译后的类文件上传到 Broker 指定路径(需配置 filterSupportRetry=true)。
    • 消费者订阅:指定过滤类名。
      consumer.subscribe("TopicTest", MessageSelector.byFilterClass("com.example.CustomFilter"));
      
  • 特点
    • 高度灵活:可编写任意复杂逻辑(如结合外部配置或数据库)。
    • 维护成本高:需管理类的版本和部署,适合有特殊需求的场景。

对比与选型建议

机制性能灵活性适用场景
Tag 过滤低(精确匹配)简单分类(如订单状态、日志类型)
SQL92复杂属性条件(如价格范围、地域)
类过滤极高(自定义)特殊逻辑(需动态规则或外部查询)

注意事项

  1. Broker 配置:SQL 和类过滤需 Broker 开启支持(enablePropertyFilterfilterSupportRetry)。
  2. 版本兼容性:SQL92 过滤需 RocketMQ 4.3.0+,类过滤需 4.6.0+。
  3. 生产环境慎用类过滤:频繁更新过滤类可能导致服务中断,建议优先使用 Tag 或 SQL 过滤。

通过合理选择过滤机制,可以显著提升消息系统的效率和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 前言Maven Tomcat Web应用程序搭建1、使用Maven构建新项目2、单击项目&#xff0c;连续按两次shift键&#xff0c;输入"添加"&#xff0c;选择"添加框架支持"3、选择Java Web程序4、点击&…

JAVA编程【jvm垃圾回收的差异】

jvm垃圾回收的差异 JVM&#xff08;Java Virtual Machine&#xff09;的垃圾回收&#xff08;GC&#xff09;机制是自动管理内存的一种方式&#xff0c;能够帮助开发者释放不再使用的内存&#xff0c;避免内存泄漏和溢出等问题。不同的垃圾回收器&#xff08;GC&#xff09;有…

亲测解决笔记本触摸板使用不了Touchpad not working

这个问题可以通过FnFxx来解决&#xff0c;笔记本键盘上Fxx会有一个触摸板图标。如果不行应该玉藻设置中关了&#xff0c;打开即可。 解决办法 在蓝牙&#xff0c;触摸板里打开即可。 Turn it on in settings。

数据结构篇——串(String)

一、引入 在计算机中的处理的数据内容大致可分为以整形、浮点型等的数值处理和字符、字符串等的非数值处理。 今天我们主要学习的就是字符串数据。本章主要围绕“串的定义、串的类型、串的结构及其运算”来进行串介绍与学习。 二、串的定义 2.1、串的基本定义 串&#xff08;s…

【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别

1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务&#xff0c; 智能体自动生成完成任务所需步骤&#xff0c; 执行相应动作&#xff08;例如选择并调用工具&#xff09;&#xff0c; 直到任务完成。 2. 先定义工具&#xff1a;Tools 可以是一个函数或三方 API也…

OmniParser技术分析(一)

1.引言 通过上篇文章介绍 OmniParser:下一代纯视觉UI自动化测试先驱相信大家已经对OmniParser有初步了解&#xff0c;接下来详细介绍下OmniParser使用了哪些技术模型实现了对UI纯视觉的检测和理解。 2.整体方案 通过阅读OmniParser提供的运行Demo代码知道&#xff0c;其实整…

从连接到交互:SDN 架构下 OpenFlow 协议的流程与报文剖析

在SDN架构中&#xff0c;交换机与控制器之间的通信基于 OpenFlow协议&#xff0c;其设计目的是实现控制平面与数据平面的解耦。以下是 交换机连接控制器 和 数据包进入交换机触发交互 的详细流程及协议报文分析&#xff1a; 一、交换机连接控制器的流程&#xff08;初始化阶段&…

R语言使用scitable包交互效应深度挖掘一个陌生数据库

很多新手刚才是总是觉得自己没什么可以写的&#xff0c;自己不知道选什么题材进行分析&#xff0c;使用scitable包后这个完全不用担心&#xff0c;选题多到你只会担心你写不完&#xff0c;写得不够快。 今天演示一下使用scitable包深度挖掘一个陌生数据库 先导入R包和数据 li…

电脑内存智能监控清理,优化性能的实用软件

软件介绍 Memory cleaner是一款内存清理软件。功能很强&#xff0c;效果很不错。 Memory cleaner会在内存用量超出80%时&#xff0c;自动执行“裁剪进程工作集”“清理系统缓存”以及“用全部可能的方法清理内存”等操作&#xff0c;以此来优化电脑性能。 同时&#xff0c;我…

C#控制台应用程序学习——3.8

一、语言概述 1、平台相关性 C# 主要运行在.NET 平台上。.NET 提供了一个庞大的类库&#xff0c;C# 程序可以方便地调用这些类库来实现各种功能&#xff0c;如文件操作、数据库访问、网络通信等。 2、语法风格 C# 的语法与 C、C 和 Java 有一定的相似性。例如&#xff0c;它使用…

鸿蒙HarmonyOS-Navagation基本用法

Navagation基本用法 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏&#xff0c;内容栏和公工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&am…

初阶数据结构(C语言实现)——4.1栈

目录 1.栈1.1栈的概念及结构1.2 栈的实现1.1.0 栈的初始化1.1.1 销毁1.1.2 入栈1.1.3 出栈1.1.4 获取栈中有效元素个数1.1.5 检测栈是否为空&#xff0c;如果为空返回非零结果&#xff0c;如果不为空返回01.1.6 获取栈顶元素1.1.7 验证 附录 栈的C语言实现源码.h文件.c文件test…

计算光学成像与光学计算概论

计算光学成像所涉及研究的内容非常广泛&#xff0c;虽然计算光学成像的研究内容是发散的&#xff0c;但目的都是一致的&#xff1a;如何让相机记录到客观实物更丰富的信息&#xff0c;延伸并扩展人眼的视觉感知。总的来说&#xff0c;计算光学成像现阶段已经取得了很多令人振奋…

什么样的物联网框架适合开展共享自助KTV唱歌项目?

现在物联网的广泛应用&#xff0c;也让更多用户们看到了它的实力&#xff0c;也使得共享经济遍地开花。其中共享自助唱歌设备也备受欢迎&#xff0c;那么适合开展共享自助KTV唱歌项目的物联网框架都应具备哪些特点呢&#xff1f; 智能化与自动化管理 物联网技术在共享KTV中的应…

机器视觉选型中,不同焦距的镜头成像视野有什么不同?

不同焦距的镜头成像视野的差异主要体现在视角范围和透视效果上。焦距越长&#xff0c;视角越窄&#xff0c;能捕捉的景物范围越小&#xff1b;焦距越短&#xff0c;视角越广&#xff0c;覆盖的景物范围越大。以下是具体分析&#xff1a; 焦距与视角的关系 焦距&#xff08;Foc…

Linux16-数据库、HTML

数据库&#xff1a; 数据存储&#xff1a; 变量、数组、链表-------------》内存 &#xff1a;程序运行结束、掉电数据丢失 文件 &#xff1a; 外存&#xff1a;程序运行结束、掉电数据不丢失 数据库&#xff1a; …

开源订货系统哪个好 三大订货系统源码推荐

在数字化转型加速的今天&#xff0c;企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率&#xff0c;还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求&#xff0c;为您精选三款主流订货系统源码&#xff0c;助您快速搭…

行为模式---迭代器模式

概念 迭代器模式是设计模式的行为模式&#xff0c;它的主要设计思想是提供一个可以操作聚合对象&#xff08;容器或者复杂数据类型&#xff09;表示&#xff08;迭代器类&#xff09;。通过迭代器类去访问操作聚合对象可以隐藏内部表示&#xff0c;也可以使客户端可以统一处理…

Maven的学习以及安装配置 2024/3/1 idea

1. Maven的安装 1.1 首先查看编程工具合适的Maven版本 我使用的是2024/3/1 版本的idea&#xff0c;接下来我会用这个版本的idea进行演示。idea没有汉化的也可以参考我的步骤。 1、打开idea的设置&#xff0c;搜索Maven&#xff0c;进入Maven设置。 我们可以看到&#xff0c;…

什么是 spring 的循环依赖?

什么是 spring 的循环依赖&#xff1f; 首先&#xff0c;认识一下什么是循环依赖&#xff0c;举个例子&#xff1a;A 对象被 Spring 管理&#xff0c;并且引入的 B 对象&#xff0c;同样的 B 对象也被 Spring 管理&#xff0c;并且也引入的 A 对象。这种相互被引用的情况&#…