小编jsw*_*324的帖子

即使队列中有消息,sqs.recieveMessage 也没有收到

所以我有 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)

amazon-sqs amazon-web-services node.js aws-lambda

5
推荐指数
1
解决办法
3597
查看次数