gpt4 book ai didi

javascript - AWS SQS 1队列2订阅者

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:41 27 4
gpt4 key购买 nike

我遇到了问题。我正在尝试将单个 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。

enter image description here

enter image description here

关于javascript - AWS SQS 1队列2订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com