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

10

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

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

Showing 0 of 3 messages in queue
为什么我在存储资源管理器中看不到“失败”的消息?

enter image description here

1个回答

10
请注意,Azure Storage Explorer使用Peek Messages API来显示队列中的消息:
此操作从队列的前面检索一个或多个消息,但不会改变消息的可见性。
然而,在Azure Function处理消息时,它使用Get Messages API,这使得其他消费者在一段时间内无法看到这些消息:
该消息不会自动从队列中删除,但在检索后,根据visibilitytimeout参数指定的时间间隔,其他客户端无法看到该消息。通常,当消费者通过Get Messages检索消息时,该消息通常保留以便删除,直到visibilitytimeout间隔过期,但不能保证这种行为。在visibilitytimeout间隔过期后,该消息再次对其他消费者可见。如果消息随后未被另一个消费者检索和删除,则原始消费者可以使用原始弹出收据删除该消息。
总之,如果您的消息没有被Azure Function删除(我猜这是"Showing 0 of 3 messages in queue"消息的情况),则您将能够在visibilitytimeout后看到它们。

谢谢您的回答。那么如果我在存储资源管理器中看不到该消息,我该如何将其删除呢?我不明白这有什么意义。为什么它不只是显示消息而改变状态呢? - aherrick
如果这些消息是不可见的,那么很遗憾无法删除它们。对我来说这是有道理的,因为Azure Storage Explorer只是一个消费者,它不应该有权限删除仍在被其他消费者处理的消息。 - Zhaoxing Lu
那么一旦消息被接收处理,就没有办法删除它了吗? - aherrick
2
您可以调用 Clear Messages (https://learn.microsoft.com/en-us/rest/api/storageservices/clear-messages) API 来清除队列中的所有消息,而不考虑 popreceipt 和 visibilitytimeout。 - Zhaoxing Lu
这不是内置在存储资源管理器中吗? - aherrick
3
清除消息是内置在存储资源管理器中的 - 有一个“清除队列”工具栏按钮,可以删除所有消息,包括那些在存储资源管理器中不可见的消息。 - Phil Seeman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接