【问题标题】:Maximum Number of ReceiveMessage requests for a message in SQSSQS 中消息的最大 ReceiveMessage 请求数
【发布时间】:2016-07-21 00:41:34
【问题描述】:

在 SQS 中,对于单个消息,可以在队列的最大保留期限内放置的 ReceiveMessage 请求的最大数量是多少?

我搜索了很多,但找不到 Max Cap 的任何数字。

它是无限的吗?

【问题讨论】:

  • 你问的是队列中可以放置的最大消息数,还是ReceiveMessage可以调用的最大次数?
  • @JohnRotenstein:是的,我需要 ReceiveMessage 可以调用的最大次数..

标签: amazon-web-services message-queue amazon-sqs


【解决方案1】:

message lifecycle的文档中没有提到限制,只有当队列的最长消息保留时间(默认4天,最长14天)到期时,该消息将被删除。

在此之前它似乎基本上是无限的,除非您将队列配置为在可配置的最大接收数之后将消息移动到单独的“死信队列”......在这种情况下,接收的最大数量是允许 - 包括在控制台中查看队列消息时弹出特定消息的次数 - 为 1000。(当然,最小值为 1)。

见:Using Amazon SQS Dead Letter Queues

似乎没有关于可以接收消息的最大次数的记录限制,否则,但是有另一个限制会限制一个队列,其中消息被重复接收并且它们的可见性超时重复允许过期(导致它们再次恢复为可见)-每个队列都支持队列中无限数量的消息,但每个队列is limited to 120,000 messages in flight at any one time(等待它们的可见性超时到期)。

否则,给定消息的最大接收次数似乎仅受最大消息保留时间乘以可见性超时的限制。默认值为 4 天 30 秒,即 4 × 24 × 60 × (60 ÷ 30) = 11,520。

在性能良好的应用程序中,您通常不希望消息被接收数百或数千次,但在有问题的应用程序中,您不希望在发现问题之前丢失消息,因此在可以证明之前我所做的假设是没有硬性限制。

您的代码还可以检查ApproximateReceiveCountattribute 的值,以了解如果您想以某种方式处理值超过某个阈值的消息,则该消息已传递了多少次。这个计数器确实包括消息在控制台的“查看消息”中被枚举的次数,因为控制台接收消息然后重置它们的可见性超时,就像应用程序一样。

如果要使用此值,请注意 SQS 消息同时具有“属性”(系统)和“消息属性”(用户定义)。

【讨论】:

  • 我完全知道死信队列和消息保留期,但我真的很想知道限制,如果它不是无限的
  • 我提到了死信队列功能来进行对比,因为它确实有一个记录的限制,以及为了未来读者的利益。正如我所指出的,没有明显的记录限制。或许@JohnRotenstein 有内幕,可以找到官方答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2014-06-06
  • 2020-10-10
  • 1970-01-01
相关资源
最近更新 更多