SQS中消息的最大ReceiveMessage请求数

时间:2016-04-01 09:15:28

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

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

我搜索了很多,但无法获得Max Cap的任何数字。

是无限的吗?

1 个答案:

答案 0 :(得分: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。

在性能良好的应用程序中,您通常不希望收到数百次或数千次的邮件,但在错误的应用程序中,您不希望在发现问题之前丢失邮件,因此我做出的假设,直到可以证明其他方面没有硬限制。

您的代码还可以检查ApproximateReceiveCount attribute的值,以了解如果您希望处理某个阈值超过特定阈值的邮件,那么邮件已传递了多少次办法。此计数器确实包括在控制台的“查看消息”中枚举消息的次数,因为控制台接收消息然后重置其可见性超时,就像应用程序一样。

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