gpt4 book ai didi

amazon-web-services - 如何扩展 SQS FIFO 队列多个监听器

转载 作者:行者123 更新时间:2023-12-01 21:57:13 26 4
gpt4 key购买 nike

我有三个 SQS FIFO 队列,每个队列在 EC2 实例中都有一个数据投影监听器守护程序作为 docker pod(SQL Server、PostgreSQL、Elastic Search 等)

所有队列都具有与下面相同的设置(稍后设置死信队列)。

Queue Type: FIFO    
Messages Delayed: 0
Content-Based Deduplication: Enabled
Default Visibility Timeout: 30 seconds
Message Retention Period: 14 days
Maximum Message Size: 256 KB

这是我使用 DynamoDB Stream => Lambda SQS Router => SQS FIFO 队列设计的事件溯源架构的全部部分(由于 SNS 不支持 FIFO 队列作为订阅者)

Content-Based Deduplication 已启用以避免队列中的重复消息,因为对于任何队列,Lambda 路由器中始终可能出现错误。

现在,我还将每条消息的 MessageGroupId 设置为 AggregateId 以对它们进行分组,但我并不真正了解消费者端如何使用它;

目前每个 SQS 队列只有一个消费者,但如果我想扩展消费者怎么办。确保多个消费者不会处理来自同一 MessageGroupId 的消息是应用程序关注的问题; - 这是 Not Acceptable ,因为使用 FIFO 队列是由于系统中事件的顺序保留!

最佳答案

如果一条消息已从 FIFO Amazon SQS 队列接收到并且它仍然不可见(“正在运行”),则 SQS 将不会提供具有相同 MessageGroupId 的另一条消息。

因此,同一队列中的多个消费者将收到具有不同 MessageGroupId 的消息,并且给定 MessageGroupId 中的消息顺序将被保留。

这里重要的是在您希望保持顺序的地方使用不同的 MessageGroupId,但不要对每条消息使用相同的 MessageGroupId

参见:AWS SQS FIFO - How to get more than 10 messages at a time?

关于amazon-web-services - 如何扩展 SQS FIFO 队列多个监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55958466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com