2016-04-14 3 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

Этот код будет читать одно сообщение и останавливаться. Если вы хотите продолжить чтение сообщений, вам нужно выполнить какой-то цикл, чтобы продолжить вызов sqs.receiveMessage(). Конечно, это может быть сложно, так как это асинхронный вызов. Я бы посмотрел на Async library.

Смежные вопросы