所以我有 3 个 lambda,其中一个带有 API 事件,该事件触发一个 lambda,该 lambda 拉下大约 50,000 个对象并将它们全部推送到队列中。
第二个 lambda 从队列中读取,一次 10 次,在循环中 30 次——这意味着它读取、做事、调用第三个 lambda、返回承诺,然后再次读取——30 次,总共 300 次读取。 lambda 执行
第三个 lambda 从队列中获取信息并用它命中另一个端点。
问题在于第二个 lambda...首先我调用一个函数,该函数返回队列中的消息数,如果它大于零,我会读取它们。然而,即使队列中有 20,000 条消息,它也经常一无所获。我不知道为什么。
WaitTimeSeconds对于长轮询,我已设置为 20。任何帮助将不胜感激,文档声称我可以使用 FIFO 队列读取高达 3,000/秒的数据,但我无法接近该性能。
这是代码:
exports.handler = (event, context, callback) => {
const sqs = new AWS.SQS({ region: process.env.AWS_REGION });
getMessageCount(sqs)
.then((messageCount) => {
if (messageCount > 0) {
mapSeries(range(0, 30), getMessages(sqs))
.then((messageRes) => {
callback(null, messageRes);
})
.catch(e => Promise.reject(e));
}
callback(null, 'No more messages');
}) …Run Code Online (Sandbox Code Playgroud)