繁体   English   中英

检查AWS sqs中的传入消息

[英]Check for an incoming message in aws sqs

我的功能如何连续检查传入的消息? 收到消息后,以下功能退出。 考虑到已经为队列启用了长时间轮询,如何连续检查新消息?

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

您的功能将需要不断轮询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);
}

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

要连续检查aws sqs中是否有传入消息,您将希望在返回数据时重新调用aws sqs。

暂无
暂无

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

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