AWS SNS-我应该如何发送消息数据MessageAttributes?

时间:2018-08-06 01:24:00

标签: amazon-web-services amazon-sns

我正在构建一个应用程序,使客户能够与服务提供商进行约会预约。我正在使用SNS-> SQS-> Lambda处理预约时需要发送的各种电子邮件。 IE浏览器,我目前发送这样的SNS消息(在node.js中):

{"matches":[
  {
    "country":"USA", 
    "postcode":"9011"
  },
  {
    "country":"USA", 
    "postcode":"9010"
  },
  {
    "country":"UK", 
    "postcode":"BB3"
  }
]}

一切正常,但是我正在使用await sns.publish({ Message: 'booking-request', TopicArn: process.env.AWS_BOOKING_REQUEST_TOPIC_ARN, MessageAttributes: { artistEmail: SNSMF.string(artist.email), artistName: SNSMF.string(artist.name), clientEmail: SNSMF.string(req.body.email), clientName: SNSMF.string(`${req.body.firstName} ${req.body.lastName}`), date: SNSMF.string(moment(req.body.date).tz(studio.timeZone).format()) } }).promise(); 传递相关的约会详细信息,以便我的通知层可以发送适当的电子邮件。

我的主要问题是,我是否以正确的方式使用MessageAttributes,还是有更好的方法来传递所有这些数据?数据应该是消息本身吗?我问是因为我相信您只能有10个MessageAttributes,并且约会细节将受到限制(当前收集有关要包括在电子邮件中的约会的10-12个数据点)。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

通常,您希望传递的“主要”信息将在消息的Body中。使用JSON传递各种类型的信息是很常见的。

MessageAttributes通常是关于消息本身的 而不是消息的内容,例如时间戳,优先级和用户信息。

鉴于您的要求,我将您的数据放入Body(例如JSON)中将避免达到限制,并且也将更具扩展性。