2016-04-14 13 views
0

SQSとnodejsの新機能です。私はキューが空ではない間にメッセージを受信したいですが、最初のメッセージを受信した後、キューは動作しなくなります。私のコードは、サーバーの起動時にのみ最初のメッセージを読み込みます。どのように私はいつもメッセージを読むことができますか?最初のメッセージの後にSQS receiveMessageが機能しなくなりました

sqs.receiveMessage({ 
    QueueUrl: queueUri, 
    WaitTimeSeconds: 3, 
    MaxNumberOfMessages: 1 
}, 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); 
     var bucketName = body.Records[0].s3.bucket.name; 
     var fullName = body.Records[0].s3.object.key; 
     var fileName = Path.basename(fullName); 
     var folderName = Path.dirname(fullName); 
     var _45px = { 
     width: 45, 
     dstnKey: fileName, 
     destinationPath: "thumbnails" 
     }; 

     removeFromQueue(message); 
} 
}); 

答えて

1

そのコードは1つのメッセージを読み、停止します。メッセージを読み続ける場合は、何らかのループを実行してsqs.receiveMessage()を呼び出す必要があります。もちろん、それは非同期呼び出しなので難しいかもしれません。私はAsync libraryを調べます。