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

AWS SNS - how should I be sending message data, MessageAttributes?

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

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 传递相关的约会详细信息,以便我的通知层可以发送正确的电子邮件。

我的主要问题是,我是否以正确的方式使用 MessageAttributes,或者是否有更好的方式来传递所有这些数据?数据应该是消息本身吗?我问是因为我相信你只能有 10 个 MessageAttributes 并且我将 运行 限制为约会详细信息(目前收集关于约会的大约 10-12 个数据点,我想将其包含在电子邮件中).有任何想法吗?谢谢!

通常,您要传递的 'main' 信息会在消息的 Body 中。使用 JSON 来传递各种类型的信息是很常见的。

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

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