我可以判断亚马逊SQS消息是否仍在播出?

时间:2015-08-03 16:52:48

标签: amazon-web-services amazon-sqs

鉴于亚马逊SQS消息,有没有办法通过API判断它是否仍在飞行中?或者,我是否需要在收到消息时记下时间戳,从当前时间减去该时间,并检查是否小于可见性超时?

1 个答案:

答案 0 :(得分:4)

使用Amazon Simple Queuing Service(SQS)的正常流程是:

  • 使用SendMessage将消息推送到队列中(它可以在队列中保留最多14天)
  • 应用程序使用ReceiveMessage 从队列中检索消息(不保证先进先出)
  • 当应用程序已完成处理消息时,它会调用DeleteMessage(它也可以调用ChangeMessageVisibility来延长超时时间)
  • 如果应用程序未在预先配置的时间段内删除邮件,则SQS会在队列中显示重新出现消息
  • 如果从队列中检索的消息超过预先配置的次数,则可以将消息移至死信队列

无法获取有关特定邮件的信息。而是应用程序要求邮件(或一批邮件),邮件变为不可见(或'在飞行中')。这样,您还可以访问可与ReceiptHandleDeleteMessage一起使用的ChangeMessageVisibility

最接近的选项是致电GetQueueAttributesApproximateNumberOfMessagesNotVisible的值将表示正在投放的消息数,但不会提供对特定消息的深入了解。