如何按组处理来自SQS队列的消息

发布于 2025-01-13 07:58:53 字数 362 浏览 1 评论 0原文

我目前有一个触发 lambda 函数的 SQS 队列,但 SQS 对正在处理的消息有 120k 的限制,这意味着 lambda 使用者只能处理 120k 消息。这对于大多数情况来说效果很好。但假设我有客户端 A 和 B,如果 A 向队列发送 500k 消息,之后 B 只发送 1 条消息,B 需要等待队列中的所有消息被处理。为每个客户端创建一个队列是没有意义的(至少不是手动创建)。例如,我如何以循环方式处理来自客户端的消息,为每个人提供相同的时间来处理他们的任务?

我一直在研究 Kinesis 数据流,但不太确定这是否能解决我的问题。我是否需要创建一个重定向到 lambda 的 SNS,负责将消息循环发送到执行相同操作的队列,但这样我就可以避免将客户端 B 发送到与客户端 A 相同的队列?

I currently have a SQS queue that triggers a lambda function, but SQS have a 120k limit on in-flight messages, meaning that only 120k messages can be processed by the lambda consumer. That works fine for the most case. But imagine I have clients A and B, if A sends 500k to the queue and after that B sends only 1 message, B needs to wait all messages in the queue to be processed. It does not make sense to create one queue for each client (at least not manually). How can I, for example, process messages from clients in a round-robin manner, give everyone the same time to process their tasks?

I have been looking into Kinesis data stream, but not so sure if this will solve my problem. Would I need to create an SNS that redirects to a lambda responsible to round-robin the message to queues that do the same thing but this way I would avoid sending client B to same queue as client A?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十六岁半 2025-01-20 07:58:53

您可以查看 SQS Fifo 队列。 Fifo 队列具有使用组 ID 属性进行分组的概念。一组中的所有消息均按顺序处理。限制是您在任何给定时刻只能处理每组一条消息。

上述概念与每个租户一个队列相同,只是使用一个专用队列。

请参阅 AWS 文档

https://aws.amazon.com/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

有关内部排序的文章质量安全体系

https://aws.amazon.com/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

注意:

FIFO队列比标准队列更贵,请在做出任何决定之前参阅定价指南。

You can check out SQS Fifo Queues. Fifo Queues have a concept of grouping using the group Id attribute. all messages in one group are processed in order. The limitations are you can only process one message per group at any given moment.

The above concept is the same as having one queue per tenant, just using one dedicated Queue.

Refer to the AWS Docs

https://aws.amazon.com/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

Article on ordering inside SQS

https://aws.amazon.com/blogs/compute/solving-complex-ordering-challenges-with-amazon-sqs-fifo-queues/

Note:

FIFO queues are more expensive than standard queues, please refer to the pricing guide before making any decisions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文