目录
一、简介
过滤的含义指的是将符合条件的消息投递给消费者,而不是将匹配到的消息过滤掉。
Apache RocketMQ 的消息过滤功能通过生产者和消费者对消息的属性、标签进行定义,并在 Apache RocketMQ 服务端根据过滤条件进行筛选匹配,将符合条件的消息投递给消费者进行消费。
1.1、消息过滤分类
在 RocketMQ 中,有两种用于消息过滤的两种选择器类型:
- Tag标签过滤:表示按照消息的标签(Tag)进行消息过滤。消息发送时可以为消息设置一个或多个标签,消费者可以通过订阅特定的标签来选择性地接收消息。当消费者订阅了特定标签的消息时,只有带有匹配标签的消息才会被消费者接收。
- SQL属性过滤:表示按照类似 SQL 的语法进行消息过滤。通过 SQL92 表达式,消费者可以根据消息的属性或标签进行更复杂的条件过滤。例如,可以根据消息的属性值、标签、消息键等进行条件过滤,以实现更精细化的消息过滤需求。
这两种选择器类型可以根据实际需求选择合适的方式进行消息过滤。Tag标签过滤 更加简单直观,适用于基本的消息过滤需求;而 SQL属性过滤 则更加灵活强大,适用于复杂的消息过滤场景
二、消息过滤
2.1、消费者maven依赖
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>rocketmq</artifactId>
<groupId>com.alian</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>10-filter-message</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>