使用S3对SQS消息而不是FIFO队列进行分组

时间:2018-11-26 05:28:40

标签: amazon-sqs

我们计划使用SQS标准队列进行消息传递。消息是一堆记录,需要在消费者端按顺序接收。由于某些原因,我们计划不使用FIFO队列。

  1. FIFO队列有here所述的一些限制,建议仅在少数选定的用例中使用。
  2. 我们有多个生产者将此类消息推送到队列(所有生产者彼此独立),因此我们最有可能达到每秒300条消息的限制。

鉴于此,我们正在评估对SQS扩展库的支持,以使用S3来存储消息有效负载。我们会将所有链接的记录合并为一条消息,并将其作为一个请求发布到SQS。我有几个问题

  1. 使用S3保留消息有效负载的局限性或副作用是什么?我知道的一个是-S3成本-我假设这不会太大,因为我们的消息没有超过几个MB的最大值。
  2. 是否存在在FIFO队列上使用这种方法对消息进行分组的现实示例?

1 个答案:

答案 0 :(得分:1)

S3会引入额外的延迟(在队列的每个末端),这取决于有效负载大小,消息发布者/使用者是在AWS还是在其他地方托管,以及单个服务器实例可使用的带宽。 (袖手旁观,对于1 MB的有效负载,我猜想是200毫秒以上。)这笔费用微不足道,特别是如果您设置了适当的存储桶生命周期策略以存档或删除旧数据。别忘了S3在最初创建时就非常一致,但是只有在最终对对象进行任何更新时才保持一致。如果可能的话,创建对象后就不要对其进行更新。

我没有任何真实的例子,但如果有找到,我会告诉您。

您可能会发现,使用某种数据库可以更轻松地实现所需的内容,就像您链接的文章中所建议的那样(这解释了FIFO队列的局限性)。寻找过早的优化,确保您的决定没有偏见。