[英]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.