当前位置: 首页 > 知识库问答 >
问题:

SQS延迟是否适用于FIFO队列的队列级别或消息组级别?

邢俊悟
2023-03-14

AWS SQS FIFO队列的批处理设置为1,延迟为1秒。收到的每个项目都与一个MessageGroup相关联。

队列同时接收10个不同消息组的30条消息,每个消息组包含3条消息。。。

一秒钟的延迟是否适用于队列级别,即30条消息需要30秒的传递时间?

还是队列会启动10个消费者,每个消息组一个,在3秒内清空队列?

共有1个答案

鲍鸿波
2023-03-14

一秒钟的延迟是否适用于队列级别,即30条消息需要30秒的传递时间?

对于FIFO,延迟应用于队列级别:

FIFO队列不支持每消息延迟,只支持每队列延迟。如果应用程序在每条消息上设置了相同的DelaySeconds参数值,则必须修改应用程序以删除每条消息的延迟,并在整个队列上设置DelaySeconds。

并行工作的comsumer Lambda的数量不需要为10,如下所示:

在SQS FIFO队列中,使用多个MessageGroupId使Lambda能够扩展并使用更高的并发限制处理队列中的更多项目。总并发性等于或小于SQS FIFO队列中唯一MessageGroupID的数量。

因此,您可以拥有比组更少的消费者lambda。但在理想情况下,您将有10个lambda并行工作。以下AWS博客文章解释了它如何与lambda一起工作:

  • AWS Lambda的新功能–SQS FIFO作为事件源
 类似资料:
  • 我们正在使用AMAZON SQS FIFO队列来处理我们应用程序的预约服务。一旦消息进入队列,它就会触发Amazon Lambda函数来管理预订过程。因为它是一个FIFO队列,所以我们确保如果有2个人请求相同的插槽,那么这个插槽将给第一个请求者。我的问题是:是否有一种方法(也许是SQS FIFO队列中的设置?)这确保了在前一条消息执行完毕之前,一条消息不会触发Amazon Lambda函数。我只是

  • 我已将FIFO队列作为目标添加到我们的自定义事件总线中。 当eventbridge连接到FIO队列时,需要MessageGroupId属性。 是否可以动态配置该值? 例如:我有一个FIFO队列,我把来自不同用户的事件。每个事件,在细节属性内,有一个属性uuid与用户标识符。我想使用这个属性,而不是e常量值作为MessageGroupId。这样,同一用户的所有事件都将按顺序处理。 谢谢你!

  • 我有一个AWS SQS FIFO队列来处理传入的一系列消息。理想情况下,我的消费者(Lambda)将以一定的节奏检索已排序的消息,并尝试重新处理它们。我的问题是是否应该添加死信队列? 我想按顺序处理SQS上的消息,如果不处理,消息组中的第一条消息似乎会阻止该组中的所有其他消息。 我目前将消息组ID都设置为相同的内容,尽管有些消息并不真正依赖于订单 当前设置{1,A组}{2,A组}{3,A组} 我是

  • 解决方案#3:使用AWS SQS标准队列和AWS ElasticCache(Redis或Memcached)。对于每条消息,“messageID”字段将保存在缓存服务器中,并在以后检查是否重复。存在意味着此消息已被处理。(顺便说一下,“MessageID”在缓存服务器中应该存在多长时间。AWS SQS文档没有提到消息可以重复到多长时间。)

  • 我有50KAWS Lambda实例同时运行,它们都向SQS FIFO队列发送消息。 我想知道每秒可以发送到SQS FIFO队列的最大消息数是多少? 我在AWS文档中找不到这样的信息。

  • 我试图用SQS FIFO队列探索SNS FIFO主题,这就是我刚才尝试的。我创建了SNS FIFO主题和SQS FIFO队列,并将FIFO队列订阅到FIFO主题。根据文档,对于上述设置,每当我们将消息发布到SNS FIFO队列时,它都应该将该消息扇出到SQS队列,但它没有发生。我能够获得PublishResult#getMessageId()表示发布部分正在成功进行,但队列中没有任何消息。由于SN