我尝试使用亚马逊文档网站跟随亚马逊sns发布示例,但它在Message,MessageAttributes和MessageStructure上含糊不清。
首先,即使将MessageStructure设置为json,Message属性也将成为字符串?例如如果我想发送一个对象而不是一个字符串消息。如果它是字符串 - 在将它作为Message属性传递之前,我是否需要JSON.stringify我的对象?
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property
我应该使用MessageAttributes代替吗?什么是该属性 - 亚马逊文档仅仅陈述了它"发布动作的消息属性"这似乎是一种重言式。
http://docs.aws.amazon.com/sns/latest/APIReference/API_Publish.html
答案 0 :(得分:1)
仅当您要在SNS理解的特定jormat中向SNS发送json格式的消息结构时,才使用将MessageStructure设置为json。这仅在您发布到多个端点类型并希望按端点类型更改消息体时使用。这与&#34不同;我想发送消息,其中正文已被序列化为JSON。"
如果您要发送" JSON对象,"你需要对其进行字符串化,并像发送任何其他(非JSON)消息一样发送它,因为SNS消息基本上是字符串。
MessageAttributes完全是另一回事。它们允许您发送伪带外键/值对以及消息,这可能很有用,例如,如果您的消息已经过gzip压缩和base64编码(例如,再次),您可以附加" EXTERNAL_ID"接收者可以评估的属性,以决定是否需要解压缩整个消息,或者只是丢弃它。