13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息

2023-11-02

SQL表达式方式可以根据发送消息时输入的属性进行一些计算。

RocketMQ的SQL表达式语法 只定义了一些基本的语法功能。

数字比较,如>,>=,<,<=,BETWEEN,=;

字符比较,如:=,<>,IN;

IS NULL or IS NOT NULL;

逻辑运算符:AND, OR, NOT;

常量类型:

数值,如:123, 3.1415;

字符, 如:‘abc’, 必须使用单引号;

NULL,特殊常量

Boolean, TRUE or FALSE;

上实例,发送三个消息,分别带上不同的header头信息;

/**
 * 发送SQL表达式头信息消息,测试根据SQL表达式过滤消息
 */
public void sendMessageWithSQL(){
	// 构造消息1
	Message msg1 = MessageBuilder.withPayload("rocketmq过滤消息测试01").build();
	Map<String, Object> headers = new HashMap<>() ;
	headers.put("type", "pay") ;
	headers.put("a", 10) ;
	rocketMQTemplate.convertAndSend("java1234-filter-rocketmq", msg1, headers);

	// 构造消息2
	Message msg2 = MessageBuilder.withPayload("rocketmq过滤消息测试02").build();
	Map<String, Object> headers2 = new HashMap<>() ;
	headers2.put("type", "store") ;
	headers2.put("a", 4) ;
	rocketMQTemplate.convertAndSend("java1234-filter-rocketmq", msg2, headers2);

	// 构造消息3
	Message msg3 = MessageBuilder.withPayload("rocketmq过滤消息测试03").build();
	Map<String, Object> headers3 = new HashMap<>() ;
	headers3.put("type", "user") ;
	headers3.put("a", 7) ;
	rocketMQTemplate.convertAndSend("java1234-filter-rocketmq", msg3, headers3);

}

消费者端,selectorExpression = “type=‘user’ or a <7”,selectorType = SelectorType.SQL92 ,指定selectorType 以及设置表达式selectorExpression

@RocketMQMessageListener(topic = "java1234-filter-rocketmq",consumerGroup ="${rocketmq.consumer.group}" ,selectorExpression = "type='user' or a <7",selectorType = SelectorType.SQL92)
@Component
public class ConsumerService implements RocketMQListener<String> {

    @Override
    public void onMessage(String s) {
        System.out.println("消费者:收到消息内容:"+s);
    }

}

默认不支持SQL表达式,启动报错:

The broker does not support consumer to filter message by SQL92

找到broker.conf配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrl6JrQH-1631418371311)(C:\Users\java1234\Desktop\RocketMQ\课件\RocketMQ分布式消息队列课件.assets\image-20210905155029358.png)]

加下:

enablePropertyFilter=true

重新启动borker

.\bin\mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true -c .\conf\broker.conf

运行测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mT1s6Eha-1631418371314)(C:\Users\java1234\Desktop\RocketMQ\课件\RocketMQ分布式消息队列课件.assets\image-20210831232544833.png)]

过滤,收到2条消息,没问题;

说明:这个是锋哥的RocketMQ备课笔记,等备课完,会发布配套的视频教程,如有需要,可以先加锋哥WX:java1239 欢迎白嫖
没问题!

微信搜一搜公众号【java1234】关注这个放荡不羁的程序员,关注后回复【资料】有我准备的一线大厂笔试面试资料以及简历模板。

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

13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • 使用按钮作为列表的渲染器

    我想使用一个更复杂的渲染器 其中包含列表的多个组件 更准确地说 类似于this https stackoverflow com questions 10840498 java swing 1 6 textinput like firefox
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 配置“DataSource”以使用 SSL/TLS 加密连接到 Digital Ocean 上的托管 Postgres 服务器

    我正在尝试托管数据库服务 https www digitalocean com products managed databases on 数字海洋网 https en wikipedia org wiki DigitalOcean 创建了

随机推荐

  • 文档处理之去停止词和IF-IDF

    声明 作者是初级学习者如果算法实现错误 或者编程不规范请各位指正 在这谢谢大家了 一 TF 定义为词频 一篇文章中某个词出现的次数 这个次数一般会进行归一化 分子小于分母 因为如果单纯的运用这个次数 篇幅长的文章会比篇幅短的次数多 二 ID
  • C++中的floor()函数

    y floor x 则y等于 不大于x的最大整数 详细参考 http www cplusplus com reference cmath floor
  • 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)

    目录 前言 GPIO是什么 GPIO的八大模式 输入模式 浮空输入 上拉输入 下拉输入 模拟输入 输出模式 开漏输出 推挽输出 复用开漏输出 复用推挽输出 GPIO的输出速率 前言 学习了这么久的单片机 说来羞愧 直到写这篇文章之前 我都没
  • 如何做抖音小程序赚钱?抖音小程序怎么赚钱?抖音最简单的赚钱方式

    抖音小程序简单易操作 不需要实名不需要开抖音直播 也不需要粉丝 发视频就会产生收益 收益来自于抖音的激励广告 抖音小程序怎么赚钱 1 抖音淘宝客 商品功能是指在抖音发布的视频 以及抖音主页上插入商品 促使一些观看你视频的用户或者打开你主页的
  • 如何在matlab中的bp神经网络中使用ADAM训练函数

    在Matlab中使用ADAM训练算法训练BP神经网络 需要进行以下步骤 定义神经网络结构 使用Matlab内置函数创建BP神经网络结构 导入数据 使用Matlab读入训练数据和测试数据 设置训练参数 设置训练算法 学习率 最大训练次数等参数
  • 什么是对象存储COS?它又有哪些优势?

    产品概述 对象存储 Cloud Object Storage COS 是腾讯云提供的一种存储海量文件的分布式存储服务 用户可通过网络随时存储和查看数据 腾讯云 COS 使所有用户都能使用具备高扩展性 低成本 可靠和安全的数据存储服务 COS
  • BAPI_ACC_DOCUMENT_POST 基本用法

    使用 BAPI 导入凭证 通过 BAPI BAPI ACC DOCUMENT POST 可以导入 G L 应收账款 应付账款等 如果导入只包含总账科目的会计凭证 也可以用函数 BAPI ACC GL POSTING POST 基本使用方法
  • INSTALL_FAILED_UPDATE_INCOMPATIBLE和INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    在windows平台通过eclipse编译android源码中 如果编译Settings或者android manifest XML中 shared user id 包含android uid shared等系统权限的时候 则会报以下错误
  • GD32F303编码器数据读取

    最近闲着没事干找到了一块GD32F303的最小系统和一个编码器 寻思着想把这个编码器做一个无极调速开关 奈何网上找的例程都是缺胳膊少腿的用不了 只能花点时间去研究配置一个读取编码器的程序 把它记录下来 具体配置直接附代码 我相信能搜到我这篇
  • 软件开发版本的演进顺序

    Alpha Alpha是内部测试版 一般不向外部发布 会有很多Bug 除非你也是测试人员 否则不建议使用 是希腊字母的第一位 表示最初级的版本 alpha 就是 beta 就是 alpha 版就是比beta还早的测试版 一般都是内部测试的版
  • function 函数传参,不定参,return返回值

    函数传参 function fn 形参 console log 形参 fn 实参 不定参 arguments arguments 不定参 函数的所有参数的集合 数组形式 只能在函数中使用 类似数组 保存实际传入的参数的集合 拥有length
  • DDR4 SDRAM - Understanding Timing Parameters

    Introduction There are a large number of timing parameters in the DDR standard but when you work with DDR4 SDRAM you ll
  • C#:通过GetManifestResourceStream加载文件出现错误提示“null值”对于“stream”无效。

    示例代码 使用资源来获取当前工具的图标 资源名称为 项目名称 图标文件名 string localNameSpace this GetType Namespace 获取工作空间 Console WriteLine localNameSpac
  • 怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块

    因为项目的需要 所以研究了一下自动生成测试代码 将经验记录下来 总会有用的 我个人认为 好记性不如多做笔记多反思总结 1 前提条件 开发环境已正确配置 工程已解决JUnit依赖关系 pom xml 我用的是4 12版本 1
  • 【这款神器可以有】3DMAX一键墙体门洞窗洞插件使用教程

    3DMAX一键墙体门洞窗洞插件 只需导入户型图 单 双面墙体一键生成 主要功能 一键生成墙体 一键门洞 一键窗洞 支持单 双面墙体生成 安装方法 无需安装 直接拖动插件脚本到3dmax窗口即可打开插件 快速开始 将3dmax系统单位设置为
  • Cookie加密6

    目标网址 aHR0cHM6Ly9zZWFyY2gua29uZ2Z6LmNvbS9wcm9kdWN0X3Jlc3VsdC8 a2V5PSVFNyVCQSVBMiVFNiVBNSVCQyVFNiVBMiVBNiZzdGF0dXM9MCZfc3R
  • PyTorch环境配置

    https blog csdn net Mind programmonkey article details 99688839
  • SQL的递归查询子/父节点结构(MySQL)

    当数据库中存储了树型结构的数据 例如城市表时 我们要搜索一个城市的所有父级城市或所有的子级城市 首先想到的就是利用SQL的递归查询 来看下面的MySQL例子 下列例子MySQL只适用于8 0版本及以上 下载SQL 执行 表结构和数据SQL文
  • Java中TreeSet、HashSet、Collection重写比较器

    一 什么是比较器 比较器是一种可以对集合或数组中的元素按照自定义的方式进行排序的对象 它是实现了Comparator接口的类的实例 可以决定元素在集合或映射中如何被排序和存储 比较器有两种基本类型 自然排序和定制排序 自然排序是指让要排序的
  • 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息

    SQL表达式方式可以根据发送消息时输入的属性进行一些计算 RocketMQ的SQL表达式语法 只定义了一些基本的语法功能 数字比较 如 gt gt lt lt BETWEEN 字符比较 如 lt gt IN IS NULL or IS NO