为什么 Azure 服务总线队列的配额大小为 1GB,消息为零?

Why is Azure Service Bus queue at 1GB quota size with zero messages?

我有一些 Azure 服务总线队列正在达到配额,其中的活动消息和死信消息非常小,甚至消息为零。似乎还有其他消息既不是 "Active" 也不是 "Deadletter"。这些是什么?服务总线资源管理器指示队列的以下统计信息,例如:

Service Bus Explorer 中的 "Message Count" 和 "Transfer DL Message Count" 非常高。很明显,这些都是用的space。我无法在服务总线资源管理器中 receive/delete 它们,也找不到有关如何处理它们的任何信息。

Azure 报告类似。什么是 "Transfer DL Message?"

已更新 我怀疑 SBExplorer 或这个实体有问题。

"Total DL Message Count" 代表 TransferDeadLetterMessageCount representing number of messages that are dead lettered. "Message Count" stands for your queue description's MessageCount 这是队列中的消息总数。由此看来,您在该队列中找到的所有消息似乎都经过了 DLQ。

您可以查看 DLQ 队列并查看那些消息。

  • 检查你是 运行 最 up-to-date 版本的 SBE
  • 如果您是并且情况仍然如此,请尝试删除队列并重新创建它,看看在使用队列一段时间后是否有助于刷新计数
  • 如果问题仍然存在,请在 https://github.com/paolosalvatori/ServiceBusExplorer/issues
  • 中提出问题

如果您有 "Transfer dead-letter messages",您一定在 ForwardTo 或 SendVia 过程中遇到了一些问题...

此文档中传输死信队列的解释: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dead-letter-queues

ForwardTo 或 SendVia 场景中的死信 在以下条件下,消息将被发送到传输死信队列:+

  • 一条消息经过 3 个以上的队列或主题 链接在一起。
  • 目标队列或主题被禁用或 删除。
  • 目标队列或主题超过最大实体数 尺寸。

要检索这些死信消息,您可以使用 FormatTransferDeadletterPath 实用程序方法创建接收器。