示例筛选策略
下面的示例演示由发布客户事务的 Amazon SNS 主题所发送的消息负载。MessageAttributes
字段包含用于描述事务的属性:
-
客户的兴趣
-
存储名称
-
事件状态
-
购买价格 (USD)
由于此消息包含 MessageAttributes
字段,因此,任何包含筛选策略的主题订阅均可选择接受或拒绝此消息。
{
"Type": "Notification",
"MessageId": "a1b2c34d-567e-8f90-g1h2-i345j67klmn8",
"TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
"Message": "message-body-with-transaction-details
",
"Timestamp": "2019-11-03T23:28:01.631Z",
"SignatureVersion": "4",
"Signature": "signature
",
"UnsubscribeURL": "unsubscribe-url
",
"MessageAttributes": {
"customer_interests": {
"Type": "String.Array",
"Value": "[\"soccer\", \"rugby\", \"hockey\"]"
},
"store": {
"Type": "String",
"Value":"example_corp"
},
"event": {
"Type": "String",
"Value": "order_placed"
},
"price_usd": {
"Type": "Number",
"Value": "210.75"
}
}
}
有关将属性应用于消息的信息,请参阅 Amazon SNS 消息属性。
以下筛选策略基于消息的属性名称和值接受或拒绝消息。
接受示例消息的策略
以下订阅筛选策略中的属性与分配给示例消息的属性匹配。
如果此策略中的任一属性与分配给该消息的属性不匹配,则此策略将拒绝该消息。
{
"store": ["example_corp"],
"event": [{"anything-but": "order_cancelled"}],
"customer_interests": [
"rugby",
"football",
"baseball"
],
"price_usd": [{"numeric": [">=", 100]}]
}
拒绝示例消息的策略
以下订阅筛选策略在其属性与分配给示例消息的属性之间存在多个不匹配项。由于消息属性中不存在 encrypted
属性名称,因此该策略属性会导致消息被拒绝,而不管分配给它的值如何。
如果存在任何不匹配项,则策略将拒绝消息。
{
"store": ["example_corp"],
"event": ["order_cancelled"],
"encrypted": [false],
"customer_interests": [
"basketball",
"baseball"
]
}