我想知道 AWS SQS 队列中的一批消息何时完成

I want to know when a batch of messages has completed in a AWS SQS Queue

我认为这更像是一个 'architecture design' 问题。

我有一个 lambda 生产者,它会将 ~600 条消息作为一个批次放入 SQS 队列(有多个生产者)(所以不是 1 条消息的主体为 ~600 条消息)。一个消费者 lambda,它将接收单独的消息并(大规模)处理它们。我想做的是 运行 每个批次完成后的另一个 lambda。

最初的想法是创建一个 'unique batch number'、一个 'total batch number' 和一个 'batch position number',并将其添加到每条消息的消息属性中。然后在消费者 lambda 中检查这些以确定批处理是否完成。

但这是否意味着我需要在批号上使用 FIFO 队列和分区,并且每批只有一个 lambda 消费者。还是我 运行 在 DynamoDB 中进行某种状态管理(是否有相应的模式?请指导我)。

问候,J

目标似乎是在分布式系统中实现 Fork-Join 功能。在 AWS 中处理此问题的一种方法是使用 Step Functions。假设需要使用队列服务,则需要跟踪整个操作的状态。一些方法可以做到这一点:

  1. 在数据库中存储整体操作的状态。
  2. 在所有其他消息之后将 'terminatation' 消息放入队列中并处理 FIFO。
  3. 创建元数据服务,接收每个服务的 'start' 和 'stop' 消息并相应地处理它们。

参考:Fork and Join with Amazon Lambda