如何解决AWS SQS 和 SNS 中的消息结构
我有一个订阅到 SQS 队列 t1
的 SNS 主题 q1
。我有一个 NodeJS 进程 p1
发布到 t1
,进程 p2
从 q1
订阅。我还有一个进程 p3
直接写入 q1
。
假设当 data
从队列中读取时填充 p2
。然后,虽然以下代码段使用 p1
作为队列的编写者,但我收到了 p3
的 JSON 解析器错误。
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)
我可以处理来自 p3
工作的数据的唯一方法是不拥有 JSON.parse(messageBody.Message)
并直接处理 messageBody
。因此,如果作者是 SNS 主题订阅者或 SQS 编写者,则队列中接收到的消息结构似乎是不同的。
您能否建议我是否可以拥有一个 NodeJS 应用程序,该应用程序可以处理来自 SQS 的数据,而不管写入该队列的内容?
解决方法
不能 100% 确定这是否会解决您的所有问题,但作为第一步,至少您可能希望启用“原始消息传递”
https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html
这样,SNS 放入队列的消息就不会添加任何额外的属性,因此应该匹配直接放入的消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。