Bra*_*yer 8 queue delay amazon-sqs amazon-web-services
我正在开展一个我打算使用Amazon SQS延迟队列的项目.
我在理解"飞行"消息的确切含义时遇到了一些麻烦.
文档中有一条说明:
注意
每个队列的机上信息数量限制为120,000.消息在队列接收后仍处于空中,但尚未从队列中删除.如果达到120,000限制,您将收到来自Amazon SQS的OverLimit错误消息.为了避免达到限制,您应该在处理完队列后删除它们.您还可以增加用于处理消息的队列数.
但我并不完全确定被队列接收的是什么.在流程图中,队列中"收到"的消息在哪里?

我会故意延迟很多消息(在图的第一个蓝色条中),但在"可见性超时"阶段(第二个蓝色条)中并不多.
这两个蓝条都算作"机上"消息吗?或者是一条消息在被ReceiveMessage请求"接收"之后(在图表底部的"消息返回"右侧)仅"飞行" ?
丢弃到延迟队列中的消息不会立即计为"在飞行中",因为它们对任何消费者都是不可见的.它们不算作"可用"或"飞行中",它们对您来说是不可见的.
您可以在AWS SQS控制台上通过简单的实验来验证这一点:
正如文档所述,消息在收到后(在某些应用程序处理时)是"飞行中",但在删除之前.如果在应用程序完成它们时未删除它们,则它们将返回"可用"状态.
您可以在AWS SQS控制台上通过第二个实验对此进行验证:
由于您的"In Flight"消息是您的应用程序当前正在处理的消息,因此该列中的队列消息深度实际上不会变得非常大.处理后删除你的消息(或重试 - >正确处理然后删除/移动到另一个队列来处理异常)你应该没事.
| 归档时间: |
|
| 查看次数: |
2138 次 |
| 最近记录: |