繁体   English   中英

在node.js中解析SQS POST消息

[英]Parsing SQS POST message in node.js

我有一个Web服务器和一个工作人员通过SQS进行通信-您通过服务器将图片上传到S3存储桶中,并将消息排队到SQS,以便工作人员从存储桶中获取图片,调整大小并上传调整大小的图像到同一桶。 我已将工作程序配置为在收到新消息(POST)时从SQS接收通知,但我似乎无法成功解析它并获取图像名称(这是一个巨大的JSON)。 如果我通过以下方式向SQS发送消息,如何从文件中提取文件名:

var params = {
        MessageBody:  JSON.stringify({data: msg.file}),
        QueueUrl: queueUrl
    };
SQS.sendMessage(params, function(err, data)...

非常感谢您的帮助!

您是否尝试过aws-sdk库? 这是那里的文档: https : //milesplit.wordpress.com/2013/11/07/using-sqs-with-node/

这是摘要:首先连接到sqs:

var AWS = require('aws-sdk'),
    awsCredentialsPath = './aws.credentials.json',
    sqsQueueUrl = 'https://sqs.us-east-1.amazonaws.com/123455678/test-queue',
    sqs;

// Load credentials from local json file
AWS.config.loadFromPath(awsCredentialsPath);
// Instantiate SQS client
sqs = new AWS.SQS().client;

或者,如果您不想使用外部文件:

var AWS = require('aws-sdk'),
    sqsQueueUrl = 'https://sqs.us-east-1.amazonaws.com/123455678/test-queue',
    sqs;

// Load credentials from local json file
AWS.config.update({
   "accessKeyId": "YOUR AWS PUBLIC KEY",
   "secretAccessKey": "YOUR AWS SECRET KEY",
   "region": "us-east-1"
});
// Instantiate SQS client
sqs = new AWS.SQS().client;

然后-阅读消息:

sqs.receiveMessage({
   QueueUrl: sqsQueueUrl,
   MaxNumberOfMessages: 1, // how many messages do we wanna retrieve?
   VisibilityTimeout: 60, // seconds - how long we want a lock on this job
   WaitTimeSeconds: 3 // seconds - how long should we wait for a message?
 }, function(err, data) {
   // If there are any messages to get
   if (data.Messages) {
      // Get the first message (should be the only one since we said to only get one above)
      var message = data.Messages[0],
          body = JSON.parse(message.Body);
      // Now this is where you'd do something with this message
      doSomethingCool(body, message);  // whatever you wanna do
   }
 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM