本文介绍消息集成中的消息过滤的特殊语法。
注意事项
消息过滤的原则如下:
- 事件必须包含事件模式中列出的所有字段名,且事件模式里的字段名必须和事件中的字段名具有相同嵌套结构。
- 事件模式是逐个字符精确匹配的 ,需注意大小写,匹配过程中不会对字符串进行任何标准化的操作。
- 要匹配的值遵循JSON规则:用引号引起来的字符串、数字以及不带引号的关键字true、false和null。
- 事件模式支持OR的语义,事件模式匹配中各个Key支持AND语义,Key的Value值支持数组OR的语义。
指定值匹配
您可以指定某个字段的值进行匹配。例如,以下示例事件模式只匹配source是阿里云云视频会议的事件。下表介绍事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 | |
| 无 |
前缀匹配
您可以指定某个字段的值的前缀进行匹配。例如,以下示例事件模式只匹配source字段以acs.开头的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
|
|
后缀匹配
您可以指定某个字段的值的后缀进行匹配。例如,以下示例事件模式只匹配subject中前缀为acs:oss:cn-hangzhou:1234567:xls-papk/、后缀为.jpg或后缀为.txt的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
|
|
除外匹配
您可以指定某个字段除了提供的值之外的任何值进行匹配。您可以将anything-but与字符串和数值一起使用。例如,以下示例事件模式只匹配state不是initializing
和x-limit不是123
的所有事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
以下模式显示单个anything-but匹配,首先是字符串,然后是数值。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
以下示例事件模式只匹配state不是stopped
和overloaded
的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
以下示例事件模式只匹配x-limit不是100
、200
和300
的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
以下示例事件模式只匹配state前缀不是init的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
以下示例事件模式只匹配source不是云视频会议的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
以下示例事件模式只匹配source不是阿里云服务的事件,即匹配您的自定义应用发出的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
| 无 |
数值匹配
您可以指定某个字段的数值或范围。例如,以下示例事件模式只匹配c-count大于0小于等于5、d-count小于10和x-limit等于301.8的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
IP地址匹配
您可以指定data中字段的IP地址。例如,以下示例事件模式中只匹配source-ip为10.0.0.0/24
的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
多模式匹配
您可以将多个规则组合为更复杂的事件模式。例如,以下示例事件模式中结合了前缀匹配、除外匹配、IP地址匹配和数值匹配,您可以通过设置多模式匹配精确过滤您想获取的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
匹配数组
事件模式中每个字段的值均为一个包含一个或多个值的数组,如果数组中的任一值匹配事件中的值,则模式匹配。如果事件中的值也是数组,只要与事件模式的数组的交集不是空集,则模式匹配。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
|
|
匹配空值
您可以创建一个事件模式与含有null值或空字符串的事件进行匹配。例如,以下示例模式匹配eventVersion值为空字符串的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
以下示例事件模式只匹配responseElements值为空值的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |
存在匹配
您可以指定data中存在或不存在某个字段。例如,以下示例匹配不包含state字段的事件。下表介绍示例事件从事件源发出经过事件模式过滤的过程。
从事件源接收的事件 | 事件模式 | 模式过滤后的事件 |
|
|
|
| 无 |