AWS SQS 和 SNS 中的消息结构

cog*_*sum 3 publish-subscribe amazon-sqs amazon-web-services node.js amazon-sns

我有一个t1订阅到 SQS 队列的SNS 主题q1。我有一个p1发布到 的NodeJS 进程,从 订阅的t1进程。我还有一个直接写入的进程。p2q1p3q1

假设从队列读取data时填充。p2然后,当以下代码片段p1作为队列的编写器使用时,我收到一个 JSON 解析器错误p3

for (var i = 0; i < data.Messages.length; i++) {
 var message = data.Messages[i];
 let messageBody = JSON.parse(message.Body)
 let payload = JSON.parse(messageBody.Message)
Run Code Online (Sandbox Code Playgroud)

我处理p3工作数据的唯一方法就是直接JSON.parse(messageBody.Message)处理messageBody。因此,如果写入者是 SNS 主题订阅或 SQS 写入者,则队列中接收到的消息结构似乎会有所不同。

您能告诉我是否可以有一个 NodeJS 应用程序可以处理来自 SQS 的数据,无论该队列中写入了什么内容?

E.J*_*nan 5

不能 100% 确定这是否能解决您的所有问题,但作为第一步,您至少可能希望启用“原始消息传递”

https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

这样,SNS 放入队列的消息不会添加任何附加属性,因此应该与直接放入队列的消息匹配。