Share via


取得訊息計數器

本文說明為佇列或訂用帳戶取得訊息計數的不同方式。 得知作用中的訊息計數,有助於判斷佇列建置之待處理項目所需處理的資源是否比目前部署的資源還多。

計數器 描述
ActiveMessageCount 佇列或訂用帳戶中處於作用中狀態,而且可供傳遞的訊息數量。
ScheduledMessageCount 已排程的狀態中的訊息數量。
DeadLetterMessageCount 無效信件佇列中的訊息數量。
TransferMessageCount 等待傳送到另一個佇列或主題的訊息數量。
TransferDeadLetterMessageCount 無法傳送到另一個佇列或主題,而且已移動到傳送無效信件佇列的訊息數量。

如果應用程式想要依據佇列長度調整資源,它應該採用循序漸進的方式來進行。 取得訊息計數是在訊息代理程式中是項昂貴的作業,頻繁執行會直接對實體效能造成不良影響。

注意

傳送至服務匯流排主題的訊息會轉送到該主題的訂閱。 因此,主題本身的作用中訊息計數是 0,因為這些訊息已成功轉送到訂閱了。 取得訂閱上的訊息計數,並確認其大於 0。 即使您在訂閱中看到了訊息,它們實際上仍會儲存在主題所擁有的儲存體中。 如果您查看訂閱,會發現這些訂閱中會有非零的訊息計數 (這會讓實體最多增加 323 MB 的空間)。

使用 Azure 入口網站

流覽至您的命名空間,然後選取佇列。 您會在佇列的 [概觀] 頁面上看到訊息計數器。

Screenshot showing the Overview page of a queue with the Message Counts section highlighted.

流覽至您的命名空間,選取主題,然後選取主題的訂閱。 您會在佇列的 [概觀] 頁面上看到訊息計數器。

Screenshot showing the Overview page of a topic's subscription with the Message Counts section highlighted.

使用 Azure CLI

使用 az servicebus queue show 命令來取得佇列的訊息計數詳細資料,如下列範例所示。

az servicebus queue show --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --name myqueue \
    --query countDetails

以下是範例輸出:

ActiveMessageCount    DeadLetterMessageCount    ScheduledMessageCount    TransferMessageCount    TransferDeadLetterMessageCount
--------------------  ------------------------  -----------------------  ----------------------  --------------------------------
0                     0                         0                        0                       0

使用 az servicebus topic subscription show 命令來取得訂閱的訊息計數詳細資料,如下列範例所示。

az servicebus topic subscription show --resource-group myresourcegroup \
    --namespace-name mynamespace \
    --topic-name mytopic \
    --name mysub \
    --query countDetails

使用 Azure PowerShell

使用 PowerShell,您可以取得佇列的訊息計數詳細資料,如下所示:

$queueObj=Get-AzServiceBusQueue -ResourceGroup myresourcegroup `
                    -NamespaceName mynamespace `
                    -QueueName myqueue 

$queueObj.CountDetails

以下是範例輸出:

ActiveMessageCount             : 7
DeadLetterMessageCount         : 1
ScheduledMessageCount          : 3
TransferMessageCount           : 0
TransferDeadLetterMessageCount : 0

您可以取得訂閱的訊息計數詳細資料,如下所示:

$topicObj= Get-AzServiceBusSubscription -ResourceGroup myresourcegroup `
                -NamespaceName mynamespace `
                -TopicName mytopic `
                -SubscriptionName mysub

$topicObj.CountDetails

傳回的 MessageCountDetails 物件具有下列屬性:ActiveMessageCountDeadLetterMessageCountScheduledMessageCountTransferDeadLetterMessageCountTransferMessageCount

下一步

請以您所選擇的語言嘗試各式範例,以探索 Azure 服務匯流排的功能。

請在下方尋找舊版 .NET 和 JAVA 用戶端程式庫的範例:

在 2026 年 9 月 30 日,我們將淘汰不符合 Azure SDK 準則的 Azure 服務匯流排 SDK 程式庫 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus 和 com.microsoft.azure.servicebus。 我們也將結束 SBMP 通訊協定的支援,因此您將無法在 2026 年 9 月 30 日之後再使用此通訊協定。 請在該日期之前移轉至最新的 Azure SDK 程式庫,該程式庫提供重要的安全性更新和改進的功能。

雖然較舊的程式庫仍可在 2026 年 9 月 30 日之後使用,但這些程式庫將無法繼續收到 Microsoft 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告