共用方式為


取得訊息計數器

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

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

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

調整時需要考慮的另一個有用計量是傳送最新訊息時與處理它時之間的時間,也稱為「關鍵時間」。 這對於佇列中可能有數千則訊息的情況很有幫助,但處理速度足夠快,可以跟上,只給出幾秒鐘的「關鍵時間」,這對於電子郵件之類的東西來說可能綽綽有餘。 NServiceBus 等第三方程式庫會透過 OpenTelemetry 發出此計量和其他有用的計量。

注意

傳送至服務匯流排主題的訊息會轉送到該主題的訂閱。 因此,主題本身的作用中訊息計數是 0,因為這些訊息已成功轉送到訂閱了。 取得訂閱上的訊息計數,並確認其大於 0。 即使您在訂閱中看到了訊息,它們實際上仍會儲存在主題所擁有的儲存體中。 如果您查看訂用帳戶,這些訂用帳戶會有非零的訊息計數,這會導致主題所使用的記憶體。

使用 Azure 入口網站

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

顯示佇列 [概觀] 頁面的螢幕擷取畫面,其中反白顯示了 [訊息計數] 區段。

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

顯示主題訂用帳戶 [概觀] 頁面的螢幕擷取畫面,其中反白顯示了 [訊息計數] 區段。

使用 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 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告