首页 > 解决方案 > 使用 AWS Lambda 按顺序处理来自 SQS 队列的元素

问题描述

我需要使用 AWS Lambda 按顺序处理 SQS 队列的元素。我需要按顺序处理元素,因为我不想在并行处理多个元素时影响数据库。请注意,此过程对时间不敏感。

我注意到 AWS Lambda 在消息可用时最多读取 5 个批次,然后并行调用 5 个 Lambda,我想避免这种情况。Lambda 可以将该数量增加到多达 1000 个批次。https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html

任何帮助将不胜感激,谢谢!

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


您只需要将--batch-size参数指定为1. 要达到预期结果的其他事项。

  • 确保您使用的是 FIFO SQS 队列
  • 使用当时获取 1 条消息batch-size
  • 为SQS本身配置一个死信队列(DLQ),这样多次尝试后无法处理的消息会被发送到DLQ SQS

检查文档以获取有关事件源映射https://docs.aws.amazon.com/cli/latest/reference/lambda/create-event-source-mapping.html https://docs.aws支持的每个参数的详细信息 。 amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html


推荐阅读