取得訊息計數器
本文說明為佇列或訂用帳戶取得訊息計數的不同方式。 得知作用中的訊息計數,有助於判斷佇列建置之待處理項目所需處理的資源是否比目前部署的資源還多。
計數器 | 描述 |
---|---|
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
物件具有下列屬性:ActiveMessageCount
、DeadLetterMessageCount
、ScheduledMessageCount
、TransferDeadLetterMessageCount
、TransferMessageCount
。
下一步
請以您所選擇的語言嘗試各式範例,以探索 Azure 服務匯流排的功能。
- 適用於 .NET (最新版) 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 JAVA (最新版) 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 Python 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 JavaScript 的 Azure 服務匯流排用戶端程式庫範例
- 適用於 TypeScript 的 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 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告。