会有很多用户。每个用户可能有多个区域。我想为每个区域发送3个类别的电子邮件提醒。每个类别都有多个电子邮件端点。
那么为每个类别创建一个可行的主题?
例如- 如果我的每个区域都有3个类别,我将不得不为每个类别创建一个主题。因此每个区域将有三个tpoics,每个主题将有一些订阅者。
我想问一下,这是正确的方式还是有更好的选择?
答案 0 :(得分:2)
关于这个场景,你提到过,我猜Filter policy for SNS最适合。您也可以按照此AWS教程' Filter Messages Published to Topics'为了这。
过滤政策的想法很简单,
将消息发布到主题时,还会在消息中包含一些属性(元数据),例如area = 2,category = 3
现在,此消息将仅发送给在订阅策略(属性)中提及此键值对的订阅者,或者发送给根本没有任何策略的所有订阅者。
定义订阅策略(属性),同时在客户端的代码中进行订阅请求。
要发布的示例消息(注意消息中的MessageAttributes):
{
"Type" : "Notification",
"MessageId" : "e3c4e17a-819b-5d95-a0e8-b306c25afda0",
"TopicArn" : "arn:aws:sns:us-east-1:111122223333:MySnsTopic",
"Message" : message body with transaction details . . .
"Timestamp" : "2017-11-07T23:28:01.631Z",
"SignatureVersion" : "1",
"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}
}
}
示例订阅者政策:
{
"store": ["example_corp"],
"event": [{"anything-but":"order_cancelled"}],
"customer_interests": ["rugby", "football", "baseball"],
"price_usd": [{"numeric":[">=", 100]}]
}
关于限制:
默认情况下,SNS为每个主题提供1000万个订阅,每个帐户提供100,000个主题。要申请更高的限额,请联系支持部门。 Link
我希望这个答案能让你在正确的方向上思考/移动