以aws sqs检查传入的消息

我的function如何不断检查传入的消息? 以下函数在收到消息后退出。 考虑到,长时间轮询已经启用队列如何不断检查一个新的消息?

function checkMessage(){ var params = { QueueUrl : Constant.QUEUE_URL, VisibilityTimeout: 0, WaitTimeSeconds: 0 } sqs.receiveMessage(params,(err,data) => { if(data){ console.log("%o",data); } }); } 

您的function将需要不断调查Amazon SQS。

如果没有可用的消息, 长轮询将延迟最多20秒的响应。 如果在此期间有消息可用,则会立即返回。 如果20秒后没有消息,则返回而不提供消息。

因此,你的函数需要再次轮询SQS(也许在做其他事情的时候)。

 var processMessages = (function (err, data) { if (data.Messages) { for (i = 0; i < data.Messages.length; i++) { var message = data.Messages[i]; var body = JSON.parse(message.Body); // process message // delete if successful } } }); while (true) { sqs.receiveMessage({ QueueUrl: sqsQueueUrl, MaxNumberOfMessages: 5, // how many messages to retrieve in a batch VisibilityTimeout: 60, // how long until these messages are available to another consumer WaitTimeSeconds: 15 // how many seconds to wait for messages before continuing }, processMessages); }