Kie*_*ran 5 distributed message-queue amazon-sqs
我在 SQS 队列中有一批n消息和一些工作人员。这些工作人员从队列中获取消息,对其进行处理,如果成功则将其删除。当所有工人完成这批工作后n消息后,我想执行一项附加操作。唯一的问题是确定批次何时完成。
一种方法是检查队列是否为空。当我查看 SQS API 时,唯一看起来接近的是ApproximateNumberOfMessages您从GetQueueAttributes. 然而,“大约”这个词表明它实际上并不是我想要的,它的目的更多的是根据队列中大约有多少消息来增加和减少工作人员的数量。
实现我想要的目标的标准方法是什么?或者 SQS 不适合这个目的?
SQS 实际上没有任何内置的消息分组机制。此外,SQS 不保证特定消息不会被处理多次[1],因此您不能简单地计算处理的消息数。
相反,您可能需要在外部数据存储中单独跟踪每条消息,然后在处理每条消息后,检查是否有任何剩余消息。
例如:
通过此设置,您将能够通过系统同时运行多个不相关的批次。