Azure 存储资源管理器 - 未显示“失败”的队列项目?

ahe*_*ick 9 azure azure-storage azure-queues

我有一个简单的存储队列设置,我也在添加消息。

这些消息由 Azure 函数接收,但处理失败。

Showing 0 of 3 messages in queue
Run Code Online (Sandbox Code Playgroud)

为什么我在存储资源管理器中看不到“失败”消息?

在此处输入图片说明

Zha*_*oft 10

请注意,Azure 存储资源管理器使用Peek Messages API 来显示队列中的消息:

此操作从队列前端检索一条或多条消息,但不会改变消息的可见性。

但是,虽然 Azure Function 正在处理消息,但它使用的是Get Messages API,这使得消息在一段时间内对其他使用者不可见:

消息不会自动从队列中删除,但在它被检索后,它在visibilitytimeout参数指定的时间间隔内对其他客户端不可见。

通常,当消费者通过 检索消息时Get Messages,该消息通常被保留以供删除,直到visibilitytimeout时间间隔到期,但不能保证此行为。在之后visibilitytimeout的时间间隔期满后,消息再次成为其他消费者可见。如果该消息随后没有被另一个消费者检索和删除,则原始消费者可以使用原始弹出回执删除该消息。

总之,如果您的消息没有被 Azure Function 删除(我猜是“显示队列中的 3 个消息中的 0 个”消息的情况),您将能够在visibilitytimeout.

  • 您可以调用清除消息 (https://docs.microsoft.com/en-us/rest/api/storageservices/clear-messages) A​​PI 来清除队列中的所有消息,而不管 popreceipt 和可见性超时。 (2认同)
  • 清除消息内置在存储资源管理器中 - 有一个“清除队列”工具栏按钮,可删除所有消息,包括那些在存储资源管理器中不可见的消息。 (2认同)