我能否判断 Amazon SQS 消息是否仍在传输中?
Can I tell if an Amazon SQS message is still in flight?
给定一条 Amazon SQS 消息,有没有办法通过 API 判断它是否仍在运行中?或者,我是否需要在收到消息时记下时间戳,从当前时间中减去它,然后检查它是否小于可见性超时?
使用 Amazon Simple Queuing Service (SQS) 的正常流程是:
- 使用
SendMessage
将消息推送 到队列中(它最多可以在队列中保留 14 天)
- 应用程序使用
ReceiveMessage
从队列中检索 消息(不保证先进先出)
- 当应用程序完成处理消息时,它调用
DeleteMessage
(它也可以调用ChangeMessageVisibility
来延长时间直到它超时)
- 如果应用程序没有在预先配置的时间段内删除消息,SQS 会使消息重新出现 到队列
- 如果从队列中检索消息的次数超过预先配置的次数,则可以将该消息移动到死信队列
无法获取有关特定消息的信息。相反,应用程序会请求一条消息(或一批消息),然后消息变得不可见(或 'in flight')。这也可以访问可与 DeleteMessage
或 ChangeMessageVisibility
.
一起使用的 ReceiptHandle
最接近的选择是致电 GetQueueAttributes
。 ApproximateNumberOfMessagesNotVisible
的值将指示 正在发送的消息的数量 但它不会提供对 特定 消息的洞察力。
给定一条 Amazon SQS 消息,有没有办法通过 API 判断它是否仍在运行中?或者,我是否需要在收到消息时记下时间戳,从当前时间中减去它,然后检查它是否小于可见性超时?
使用 Amazon Simple Queuing Service (SQS) 的正常流程是:
- 使用
SendMessage
将消息推送 到队列中(它最多可以在队列中保留 14 天) - 应用程序使用
ReceiveMessage
从队列中检索 消息(不保证先进先出) - 当应用程序完成处理消息时,它调用
DeleteMessage
(它也可以调用ChangeMessageVisibility
来延长时间直到它超时) - 如果应用程序没有在预先配置的时间段内删除消息,SQS 会使消息重新出现 到队列
- 如果从队列中检索消息的次数超过预先配置的次数,则可以将该消息移动到死信队列
无法获取有关特定消息的信息。相反,应用程序会请求一条消息(或一批消息),然后消息变得不可见(或 'in flight')。这也可以访问可与 DeleteMessage
或 ChangeMessageVisibility
.
ReceiptHandle
最接近的选择是致电 GetQueueAttributes
。 ApproximateNumberOfMessagesNotVisible
的值将指示 正在发送的消息的数量 但它不会提供对 特定 消息的洞察力。