我正在构建一个应用程序,使客户能够与服务提供商进行约会预约。我正在使用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个数据点)。有任何想法吗?谢谢!
答案 0 :(得分:3)
通常,您希望传递的“主要”信息将在消息的Body
中。使用JSON传递各种类型的信息是很常见的。
MessageAttributes
通常是关于消息本身的 而不是消息的内容,例如时间戳,优先级和用户信息。
鉴于您的要求,我将您的数据放入Body
(例如JSON)中将避免达到限制,并且也将更具扩展性。