繁体   English   中英

AWS SQS 1队列2订阅者

[英]AWS SQS 1 queue 2 subscribers

我遇到了问题。 我正在尝试将单个SQS队列与两个长轮询nodeJS实例一起使用。 我面临的问题是,当我将新消息放入队列时,两个实例都立即提取相同的消息。 有没有办法防止这种行为? 我的目标是最终拥有一个NodeJS处理场,每个实例将从队列中提取一条唯一的消息并执行处理。

以下是我的SQS侦听器的代码:

 console.log("Checking SQS Queue"); return new Promise((resolve,reject) => { let sqs = new aws.SQS(); let params = { AttributeNames: [ "SentTimeStamp" ], MaxNumberOfMessages: 1, MessageAttributeNames: [ "All" ], QueueUrl: SQS_URL, WaitTimeSeconds: 20, VisibilityTimeout: 0 }; sqs.receiveMessage(params, (err, data) => { if(err){ console.log("Error: ",err); reject(err); } else if (data.Messages) { resolve(data); } resolve(data); }); }); 

您需要设置一个更高的VisibilityTimeout ,至少是处理该消息所花费的时间,然后在一个实例从SQS读取该消息直到VisibilityTimeout值之前,该实例将对其他实例不可见。

创建队列时,请检查为队列设置的VisibilityTimeout。

在此处输入图片说明

在此处输入图片说明

暂无
暂无

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

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