You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SNS Topic复杂JSON消息订阅过滤规则不生效问题排查求助

问题根因

你编写的过滤器不生效核心是两个错误:

  1. SNS订阅过滤器默认匹配消息JSON的顶级字段,但operation/tableName是嵌套在transaction对象下的属性,columnName/hasChanged/newValue是columns数组内的子属性,平级写规则无法命中对应字段。
  2. 未指定过滤器作用范围,SNS默认过滤「消息属性」,而你需要匹配的是「消息正文」的内容。

正确解决方案

步骤1:使用正确的嵌套路径+数组匹配语法编写过滤规则

SNS支持用.访问嵌套对象属性,用[*]匹配数组内的任意元素,规则如下:

{
  "transaction.operation": ["UPDATE"],
  "transaction.tableName": ["Customer"],
  "columns[*].columnName": ["IsActive"],
  "columns[*].hasChanged": [true],
  "columns[*].newValue": ["0"]
}

规则逻辑:只要消息同时满足「Customer表的UPDATE操作、columns数组中存在IsActive字段变更为0的记录」就会被筛选出来,完全匹配你的业务需求。

步骤2:指定过滤器作用范围为消息正文

  • 控制台操作:创建订阅过滤器时,在「过滤器范围」的下拉选项中选择「消息正文」,不要选默认的「消息属性」。
  • CLI/SDK操作:创建过滤器时添加参数FilterPolicyScope = MessageBody。

校验注意事项

注意数据类型完全匹配:消息中newValue是字符串类型的"0",规则里不能写数字0;hasChanged是布尔值true,规则里不能写字符串"true",类型不匹配会导致过滤失败。

内容的提问来源于stack exchange,提问作者user007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:36:08