gpt4 book ai didi

node.js - 异步 for 循环不将 sqs 消息放入队列

转载 作者:行者123 更新时间:2023-12-02 19:26:50 28 4
gpt4 key购买 nike

我正在尝试在 Lambda 函数内部运行一个 for 循环,该循环将解析 SQS 消息并将其发送到某个队列。目前它正在运行 for 循环并正确创建参数(我通过日志记录检查),并且在 for 循环外部/之后运行一条日志消息,表示 lambda 已完成。

问题是 SQS 消息未发送和/或到达 SQS 队列。

我没有包含 lambda 函数的其余部分,因为它只是噪音,与问题无关,因为它已经正确运行,唯一的问题是 sqs 消息。

for (var i = 0; i < dogs.length; i++) {
let MessageBody = JSON.stringify(dogs[i]);

let params = {
MessageBody,
QueueUrl: process.env.serviceQueue,
DelaySeconds: 0
};
sqs.sendMessage(params, function(err, data) {
if (err) {
logger.error(`sqs.sendMessage: Error message: ${err}`);
} else {
let stringData = JSON.stringify(data);
logger.info(`sqs.sendMessage: Data: ${stringData}`);
}
});
}

最佳答案

迭代多个异步请求并使用回调会导致灾难和困惑的代码。我推荐以下内容(使用异步/等待)

await Promise.all(dogs.map(async (dog) => {
let params = {
MessageBody: JSON.stringify(dog),
QueueUrl: process.env.serviceQueue,
DelaySeconds: 0
}
let data = await sqs.sendMessage(params).promise().catch(err => {
logger.error(`sqs.sendMessage: Error message: ${err}`);
});
logger.info(`sqs.sendMessage: Data: ${JSON.stringify(data)}`);
}));

关于node.js - 异步 for 循环不将 sqs 消息放入队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62309005/

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