Je sais qu'il existe un moyen de déterminer le nombre de messages (ou leur nombre approximatif) dans la file d'attente Azure (compte de stockage); Cependant, existe-t-il un moyen de rechercher le nombre de messages en attente sur une file d'attente Azure Service Bus ?
var nsmgr = Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(connectionString);
long count = nsmgr.GetQueue(queueName).MessageCount;
Il s’appelle MessagesCountDetails.ActiveMessageCount. Il renvoie le numéro de Messages actifs dans la file d’attente. Vous avez probablement des messages de lettres mortes:
var msg = Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(Settings.Default.ConnectionString);
numofmessages.Text = msg.GetQueue(QueueName).MessageCountDetails.ActiveMessageCount.ToString();
avez-vous consulté l'API Description de la file d'attente ? Il existe une propriété appelée MessageCount
.
Voici également la page de documentation de référence du SDK .NET .
Voici un exemple PowerShell pour surveiller en permanence la longueur de la file d'attente telle qu'elle est utilisée dans Azure Portal Cloud Shell
cd "Azure:\<MySubscription>\"
while (1) {(Get-AzureRmServiceBusQueue -ResourceGroup <myRG> -NamespaceName <myNS> -QueueName <myQueueName>).CountDetails | Select -expand ActiveMessageCount}
J'ai rencontré ce même problème en essayant d'obtenir le compte de la file d'attente des lettres mortes. Il semble que la file d'attente deadletter ne vous permette pas d'obtenir un nombre directement, vous l'obtenez à partir des détails MessageCountDetails de la file d'attente normale.
string connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.Connstr"].ToString();
NamespaceManager nsmgr = Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(connectionString);
return nsmgr.GetQueue(QueueName).MessageCountDetails.DeadLetterMessageCount;