消息在再次可见之前在 Azure 队列中隐藏多长时间
本文关键字:队列 隐藏 长时间 Azure 消息 | 更新日期: 2023-09-27 18:35:28
对于任何正常的 Azure 队列,我都会弹出一条消息,然后执行一些工作。在工作完成之前,我不想删除该消息。
该消息在被视为失败并再次显示在队列中之前会隐藏多长时间?
例如。
var message = myQueue.GetMessage();
// Do Work ..
myQueue.DeleteMessage();
我的工作可能需要..30秒或其他时间。 或者如果花了..1分钟或2分钟会发生什么?
我基本上不希望消息在工作完成之前再次可用,以防另一个工人将其从队列中弹出......即使该工人仍在工作。
我们可以设置"隐藏"时间吗?
我们可以设置"隐藏"时间吗?
是的。您可以设置对其他呼叫者隐藏消息的时间。如果您查看 REST API 文档以了解 Get Messages
,它需要一个名为 visibilitytimeout
的参数。此参数负责将消息隐藏指定的秒数。经过该时间段后,如果未删除,该消息将再次可见。
该消息在被视为失败之前会隐藏多长时间 并在队列中再次可见?
如果使用的是 .Net 存储客户端库,则可以选择指定可见性超时期限。请查看文档,了解可在其中指定可见性超时Get Message
。由于这是库中的可选参数(但在 REST API 级别是必需的),因此库提供的默认值为 90 秒。
您可以将可见性超时指定为其中一个 GetMessage() 重载的参数。您还可以使用 UpdateMessage() 来扩展消息的不可见性。但是,您永远无法保证消息不会被处理两次 - 例如,消费者在完成工作后但在删除消息之前死亡。Windows Azure Queues 是一个尽力而为的 FIFO 队列 - 具有至少一次语义。