Azure トピック サブスクリプションの現在のメッセージ数を取得する方法はありますか?
SubscriptionDescription クラスには MessageCount プロパティがありますが、このクラスはサブスクリプションの作成にのみ使用されるようです。既存のサブスクリプションの SubscriptionDescription オブジェクトを取得する方法がわかりません。
Azure トピック サブスクリプションの現在のメッセージ数を取得する方法はありますか?
SubscriptionDescription クラスには MessageCount プロパティがありますが、このクラスはサブスクリプションの作成にのみ使用されるようです。既存のサブスクリプションの SubscriptionDescription オブジェクトを取得する方法がわかりません。
私が探していたものを見つけました:
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
var subscriptionDesc = namespaceManager.GetSubscription(topicPath, subscriptionName);
long messageCount = subscriptionDesc.MessageCount;
Microsoft.ServiceBus.Messaging
受け入れられている答えは、名前空間( nuget package )で .NET Framework ライブラリを使用する場合です。
名前空間Microsoft.Azure.ServiceBus
( nuget package ) を持つ .NET Standard ライブラリの場合、次のコードでうまくいきます。
var managementClient = new ManagementClient(connectionString);
var runTimeInfo = await managementClient.GetSubscriptionRuntimeInfoAsync(topicPath, subscriptionName);
var messageCount = runTimeInfo.MessageCountDetails.ActiveMessageCount;
2 つのライブラリの違いの詳細については、Microsoft.ServiceBus.Messaging と Microsoft.Azure.ServiceBusを参照してください。
.NET Standard の廃止に伴い、.NET 5+ アプリ用の新しい名前空間Azure.Messaging.ServiceBus
( nuget package ) があります。このパッケージで同じことを行うために必要なコードは次のとおりです。
var client = new Azure.Messaging.ServiceBus.Administration.ServiceBusAdministrationClient("connetionString");
var runtimeProps = (await client.GetQueueRuntimePropertiesAsync("queueName")).Value;
var messageCount = runtimeProps.ActiveMessageCount;