web-dev-qa-db-ja.com

Azure Service Busキューにあるメッセージの数を確認する

Azureキュー(ストアアカウント)のメッセージ数(またはおおよその数)を確認する方法があることは知っています。ただし、Azure Service Busキューで保留中のメッセージの数を照会する方法はありますか?

24
aceinthehole
var nsmgr = Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(connectionString);
long count = nsmgr.GetQueue(queueName).MessageCount;
30
Joseph

これは、MessagesCountDetails.ActiveMessageCountと呼ばれます。キュー内のアクティブメッセージの数を返します。あなたはおそらくいくつかのデッドレターメッセージを持っています:

var msg = Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(Settings.Default.ConnectionString);
numofmessages.Text = msg.GetQueue(QueueName).MessageCountDetails.ActiveMessageCount.ToString();
11
Katsifaris

Queue Description APIを見ましたか? MessageCountというプロパティがあります。

こちらも 。NET SDKリファレンスドキュメントページ です。

7
David Makogon

デッドレターキューからカウントを取得しようとして、同じ問題に遭遇しました。 deadletterqueueでは直接カウントを取得できないようです。通常のキューのMessageCountDetailsから取得します。

string connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.Connstr"].ToString();
NamespaceManager nsmgr = Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(connectionString);
return nsmgr.GetQueue(QueueName).MessageCountDetails.DeadLetterMessageCount;
1
Justin Baird

私はそれを取得するためにドキュメントを掘り下げるのに2時間を費やしてきました。netコアとMicrosoft.Azure.ServiceBus nugetパッケージを使用している人々の場合、コードは次のようになります。

var managementClient = new ManagementClient("queue connection string"));
var runtimeInfo = await managementClient.GetQueueRuntimeInfoAsync("queueName");

var messagesInQueueCount = runtimeInfo.MessageCountDetails.ActiveMessageCount;

どうやら、古いQueueDescriptionオブジェクトではなく、QueueRuntimeInfoオブジェクトからすべてのカウント(デッドレター、アクティブなどを含む)に関する情報を取得します。

0
f1xxxer

Azure Portal Cloud Shellで使用されるキューの長さを継続的に監視するPowerShellの例を次に示します

cd "Azure:\<MySubscription>\"
while (1) {(Get-AzureRmServiceBusQueue -ResourceGroup <myRG> -NamespaceName <myNS> -QueueName <myQueueName>).CountDetails | Select -expand ActiveMessageCount}
0
golfalot

ジョセフの答えに基づいて、私は思いつきましたが、トピックとサブスクリプションについてです。

public async Task<long> GetCounterMessages()
        {
            var client = new ManagementClient(ServiceBusConnectionString);    
            var subs = await client.GetSubscriptionRuntimeInfoAsync(TopicName, SubscriptionName);
            var countForThisSubscription = subs.MessageCount;  //// (Comes back as a Long.)               
            return countForThisSubscription;
        }
0
indofraiser