【问题标题】:Lambda batch processing of SQS messages from multiple queues来自多个队列的 SQS 消息的 Lambda 批处理
【发布时间】:2021-01-15 09:45:40
【问题描述】:

我有一个 lambda 设置,它的事件源配置了 5 个不同的 SQS 队列。现在,如果 lambda 的批量大小配置为 10,则 lambda 处理程序中 SQSEvent 中的 10 条记录将来自同一个队列,还是批处理中的 10 条记录来自 5 个队列中的任何一个?

【问题讨论】:

  • 我没有遇到任何关于该案例的文档,但我很确定所有记录都来自同一个队列。因为组合来自多个队列的消息将是调用 lambdas 的中间服务的额外工作。它只是轮询一个队列并调用 lambda,那里没有那么多逻辑。请注意,即使批量大小为 10 并且有 10 条记录,您也可能不会获得包含 10 条消息的批次,而是较小的批次。只有当队列中有非常人的消息时,批次才会真正生效。 (除非您配置批处理窗口)
  • 每个队列都有自己的 URL。如果您想从不同的队列中获取消息,您还需要调用 sqs.receiveMessage 方法 5 次,每次使用特定的队列 url。

标签: amazon-web-services aws-lambda amazon-sqs


【解决方案1】:

该行为未记录在案,但几乎可以肯定 Lambda 服务将批处理来自一个且仅在单个 Lambda 调用中排队的事件。

也就是说,如果您能够区分一个队列源与另一个队列源对您的应用程序至关重要,那么:

  1. 为每个队列创建一个 Lambda 处理程序(它可以简单地调用您的通用处理程序函数,并指示哪个队列是源),或者
  2. 检查事件中每条记录中eventSourceARN的值

【讨论】:

    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多