消息在再次可见之前在 Azure 队列中隐藏多长时间

本文关键字:队列 隐藏 长时间 Azure 消息 | 更新日期: 2023-09-27 18:35:28

对于任何正常的 Azure 队列,我都会弹出一条消息,然后执行一些工作。在工作完成之前,我不想删除该消息。

该消息在被视为失败并再次显示在队列中之前会隐藏多长时间?

例如。

var message = myQueue.GetMessage();
 // Do Work ..
myQueue.DeleteMessage();

我的工作可能需要..30秒或其他时间。 或者如果花了..1分钟或2分钟会发生什么?

我基本上不希望消息在工作完成之前再次可用,以防另一个工人将其从队列中弹出......即使该工人仍在工作

我们可以设置"隐藏"时间吗?

消息在再次可见之前在 Azure 队列中隐藏多长时间

我们可以设置"隐藏"时间吗?

是的。您可以设置对其他呼叫者隐藏消息的时间。如果您查看 REST API 文档以了解 Get Messages ,它需要一个名为 visibilitytimeout 的参数。此参数负责将消息隐藏指定的秒数。经过该时间段后,如果未删除,该消息将再次可见。

该消息在被视为失败之前会隐藏多长时间 并在队列中再次可见?

如果使用的是 .Net 存储客户端库,则可以选择指定可见性超时期限。请查看文档,了解可在其中指定可见性超时Get Message。由于这是库中的可选参数(但在 REST API 级别是必需的),因此库提供的默认值为 90 秒。

您可以将可见性超时指定为其中一个 GetMessage() 重载的参数。您还可以使用 UpdateMessage() 来扩展消息的不可见性。但是,您永远无法保证消息不会被处理两次 - 例如,消费者在完成工作后但在删除消息之前死亡。Windows Azure Queues 是一个尽力而为的 FIFO 队列 - 具有至少一次语义。