2016-05-01 21 views
0

WebサーバーとSQSを介して通信するワーカーがあります。サーバーを介してS3バケットに画像をアップロードし、SQSにメッセージをエンキューしてワーカーが取得しますバケットからサイズを変更し、サイズ変更されたイメージを同じバケットにアップロードします。 新しいメッセージが到着したときにSQSから通知を受け取るようにワーカーを設定しましたが、正常に解析してイメージ名を取得できないようです(巨大なJSONです)。 私はSQSにメッセージを書いた場合、どのように私はそれからファイル名を抽出します:いくつかの助けを本当にお願い申し上げnode.jsのSQS POSTメッセージの解析

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

+0

あまりにも多くの仮定、あまりにも多くの仮定。あなたが話している労働者は何ですか?コードや標準ライブラリを所有していますか? – mootmoot

答えて

0

あなたはaws-sdkライブラリを試しましたか?ここで

https://milesplit.wordpress.com/2013/11/07/using-sqs-with-node/がまとめたものである:ここでは、そこからドキュメントです

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; 

:あなたは、外部ファイルを使用したくない場合は、

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; 

をまたは:最初のSQSへの接続その後、メッセージを読んでください:

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 
    } 
}); 
+0

こんにちはビソン、ええ、私はそれを使いました。私の問題は、SQSから戻ってきたJSON(sqs.receiveMessageを使用していないが、app.post(/ newImage、function(req、res){...})を使用して解析されることを拒否するということでした! req.body.dataを挿入して、サーバーがエンキューしたmsg.fileを取得しました。 – Shredder

関連する問題