Kubernetes 上的事件网格允许针对 json 有效负载中的任何属性指定筛选器。 这些筛选器建模为 AND 条件集,每个外部条件都具有可选的内部 OR 条件。 对于每个 AND 条件,请指定以下值:
- OperatorType - 比较类型。
- 键 - 要对其应用筛选器的属性的 json 路径。
- 值 - 运行筛选器的引用值 (或) 值 - 运行筛选器所针对的引用值集。
重要
Azure Arc 上的 Kubernetes 事件网格目前正处于公共预览阶段。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
按事件类型筛选
默认情况下,事件源的所有 事件类型 (type 属性)都会发送到终结点。 可以决定仅将某些事件类型发送到终结点。 按事件类型筛选的 JSON 语法是:
"filter": {
"includedEventTypes": [
"orderCreated",
"orderUpdated"
]
}
在上面的示例中,只有类型 orderCreated 和 orderUpdated 的事件会被发送到订阅者终结点。
下面是一个示例事件:
[{
"specVersion": "1.0",
"type" : "orderCreated",
"source": "myCompanyName/us/webCommerceChannel/myOnlineCommerceSiteBrandName",
"id" : "eventId-n",
"time" : "2020-12-25T20:54:07+00:00",
"subject" : "account/acct-123224/order/o-123456",
"dataSchema" : "1.0",
"data" : {
"orderId" : "123",
"orderType" : "PO",
"reference" : "https://www.myCompanyName.com/orders/123"
}
}]
按主题筛选
对于按主题的简单筛选,请指定主题的开头值或结尾值。 按主题筛选的 JSON 语法为:
"filter": {
"subjectBeginsWith": "/account/acct-123224/"
}
例如,上面配置的筛选器会将与帐户 acct-123224 关联的所有订单发送到订阅服务器终结点。
将事件发布到主题时,请以一种方式为事件创建主题,使订阅者能够轻松了解他们是否对事件感兴趣。 订阅者使用主题属性筛选和路由事件。 请考虑添加事件发生的路径,以便订阅者可以按该路径的段进行筛选。 通过路径,订阅者可精确或宽泛地筛选事件。 如果在主题中提供三个段路径(如 /A/B/C),则订阅者可以按第一个段 /A 进行筛选以获取一组广泛的事件。 这些订阅者获取具有 /A/B/C 或 /A/D/E 等主题的事件。 其他订阅者可以按 /A/B 进行筛选,以获取更窄的事件集。
按事件数据中的值进行筛选
请参阅 Azure 上的事件网格中的“高级筛选”部分 ,详细了解高级筛选。 Kubernetes 上的事件网格不支持以下功能和运算符。
- 对传入事件的键中的数组数据进行筛选
- 允许筛选 CloudEvents 扩展上下文属性。
- 以下运算符
- StringNotContains
- StringNotBeginsWith
- StringNotEndsWith
- NumberInRange
- NumberNotInRange
- IsNullOrUndefined
- IsNotNull
后续步骤
若要了解 Azure Arc for Kubernetes 上的事件网格支持的目标和处理程序,请参阅 Kubernetes 上的事件网格 - 事件处理程序。