Est-ce que quelqu'un sait s'il existe un moyen de vérifier le nombre de messages dans une file d'attente RabbitMQ à partir d'une application cliente? J'utilise la bibliothèque client .NET.Vérifiez la taille de la file d'attente RabbitMQ du client
Répondre
Vous pouvez réellement récupérer ceci via le client. Lorsque vous effectuez une opération queue_declare
, RabbitMQ renvoie un trois ligne contenant (<queue name>, <message count>, <consumer count>)
. L'argument passive
de queue_declare vous permet de vérifier si une file d'attente existe sans modifier l'état du serveur. Vous pouvez donc utiliser queue_declare
avec l'option passive
pour vérifier la longueur de la file d'attente. Pas sûr .NET, mais en Python, il ressemble à ceci:
name, jobs, consumers = chan.queue_declare(queue=queuename, passive=True)
Je suis 2 ans trop tard, mais je cherchais moi-même et a constaté que rabbitmq donne u script simple de communiquer aux noeuds Erlang .. son dans le dossier sbin où le script de départ pour RabbitMQ est located..so vous pouvez dire essentiellement
./rabbitmqctl list_queues
cela affichera les files d'attente ainsi que le nombre de messages en attente de ces files d'attente vous pouvez aussi dire de la même
./rabbitmqctl list_channels
./rabbitmqctl list_connections
etc. Pour plus d'informations, vous pouvez visiter here
Mise à jour: il semble que la mise en œuvre de pika queue_declare (..) a changé depuis poste très utile de mmalone.
En python/pika (v0.9.5), il est toujours possible de vérifier la profondeur de la file d'attente via pika, mais cela nécessite une approche légèrement plus indirecte. Queue_declare (...) passe un objet méthode dans sa fonction de rappel, que vous pouvez ensuite inspecter. Par exemple, pour vérifier le nombre de messages et les consommateurs dans la file d'attente nommée 'myQueue'
:
def cbInspect(qb):
messagesInQueue = qb.method.message_count
print "There are %d messages in myQueue" % messagesInQueue
consumersInQueue = qb.method.consumer_count
print "There are %d consumers in myQueue" % consumersInQueue
return
myChannel = channel.queue_declare(callback=cbInspect, queue='myQueue', passive=True)
Hope this helps, et s'il vous plaît allez-y doucement sur moi, je suis nouveau ici :-)
channel.queue_declare renvoie un objet qui contient le nombre de messages en cours, donc si vous voulez éviter un rappel, vous pouvez également accéder au nombre de messages comme ceci: myChannel.method.message_count – corford
Si vous voulait faire cela dans .Net, vérifiez quelle version de la bibliothèque Client que vous utilisez.
J'utilise la version 2.2.0 et j'ai dû utiliser BasicGet (queue, noAck).
Dans cette version de la bibliothèque, QueueDeclare() renvoie uniquement une chaîne contenant le nom de la file d'attente.
BasicGetResult result = channel.BasicGet("QueueName", false);
uint count = result != null ? result.MessageCount : 0;
Je sais de la 2.6.1 version QueueDeclare() retourne un objet de type QueueDeclareOk.
QueueDeclareOk result = channel.QueueDeclare();
uint count = result.MessageCount;
Vous pouvez appeler à partir de la ligne de commande:
<InstallPathToRabbitMq>\sbin\rabbitmqctl.bat list_queues
Et vous voir la sortie suivante:
files d'attente ... Liste
QueueName 1
. ..terminé.
HTH
J'utilise la version 3.3.1 du .Net Client Library.
J'utilise ce qui suit, ce qui est très similaire à la deuxième suggestion de Ralph Willgoss mais vous pouvez fournir le nom de la file d'attente comme argument.
QueueDeclareOk result = channel.QueueDeclarePassive(queueName);
uint count = result != null ? result.MessageCount : 0;
Vous pouvez utiliser la méthode de MessageCount de IModel, documenté ici
edit: Je sais que c'est un poste très ancien, mais il est la première réponse de Google, et je l'espère aider les gens à chercher cette réponse dans le futur.
C'est la première fois que j'ai vu cela mentionné. Pourquoi donc?!! – Theyouthis
Au moins de RabbitMQ 3.3.5, vous pouvez le faire dans un programme C# sans aucune bibliothèque cliente RabbitMQ en appelant l'API HTTP Gestion RabbitMQ:
// The last segment of the URL is the RabbitMQ "virtual host name".
// The default virtual host name is "/", represented urlEncoded by "%2F".
string queuesUrl = "http://MY_RABBITMQ_SERVER:15672/api/queues/%2F";
WebClient webClient = new WebClient { Credentials = new NetworkCredential("MY_RABBITMQ_USERNAME", "MY_RABBITMQ_PASSWORD") };
string response = webClient.DownloadString(queuesUrl);
Le nom d'utilisateur et mot de passe sont les mêmes que ceux vous utilisez pour vous connecter à l'interface utilisateur de la console de gestion RabbitMQ.
La réponse sera une chaîne JSON avec la liste des files d'attente, y compris leur nombre de messages, parmi d'autres propriétés. (Si vous le souhaitez, vous pouvez désérialiser que JSON dans un objet C# en utilisant une bibliothèque comme Json.NET.)
La documentation de l'API est installé avec la console de gestion RabbitMQ et devrait être disponible sur ce serveur à http://MY_RABBITMQ_SERVER:15672/api.
mon petit extrait basé sur la réponse de Myydrralls. Je pense que s'il avait du code dans sa réponse, je l'aurais remarqué beaucoup plus vite.
public uint GetMessageCount(string queueName)
{
using (IConnection connection = factory.CreateConnection())
using (IModel channel = connection.CreateModel())
{
return channel.MessageCount(queueName);
}
}
- 1. Commentaires architecturaux pour la mise en file d'attente avec RabbitMQ?
- 2. Vérifiez la taille du fichier téléchargé dans Oracle UCM
- 3. Taille/Emplacement de la zone client MDI de Winforms
- 4. différence de taille entre la taille du dossier du Finder et du gestionnaire de fichiers Carbon
- 5. Phusion Passenger + Workling + RabbitMQ
- 6. comparaison de la taille du code et de la taille de la source
- 7. Enregistrement/consultation de la file d'attente JMS pour tous les messages (client invisible pour la file d'attente) (OpenJMS)
- 8. WPF/XAML - Mise à l'échelle de la taille du texte à la taille de la fenêtre
- 9. Modifier la taille du contrôle de l'image en javascript
- 10. La taille du fichier de jQuery
- 11. Modification de la taille du champ DBF
- 12. Définition de la taille du texte sIFR
- 13. Comment réorganiser les commandes de la liste déroulante comme la file d'attente NetFlix du côté client (Javascript)
- 14. Comment trouver la taille de la mémoire virtuelle et la taille du cache d'un système Linux?
- 15. Comment coordonner la configuration du client subversion?
- 16. Le client RabbitMQ C# ne parle pas à Apache Qpid Java Broker
- 17. Comment obtenir la taille interne/client d'une sous-classe NSView?
- 18. Comment spécifier la taille de la zone client d'un formulaire en mode conception?
- 19. La taille de DataGridView change automatiquement en fonction de la taille du formulaire
- 20. Implémentation de la file d'attente
- 21. La réponse du client est différente de la réponse IE
- 22. Représente la logique de la question client du centre d'appels
- 23. Détection de la taille du contenu du SWFLoader
- 24. Détermination de la taille du fichier image + dimensions via Javascript?
- 25. Comment obtenez-vous la taille du client dans une application Silverlight?
- 26. VS2005: Limiter la taille du tas
- 27. SignByCert et la taille maximale du signe
- 28. Jsp télécharger la taille du fichier
- 29. Comment optimiser la taille du fichier PDF?
- 30. Obtenir la taille du contrôle automatique?
Ceci devrait être la réponse acceptée, même s'il a manqué Basic.Get en tant que 2ème source de cette information. –
Qu'est-ce que chan ici et comment l'importer? – Kishan
Ce n'est plus la meilleure façon de le faire. – Theyouthis