Si vous ne vous souciez pas des données dans la base de données de gestion; à- dire users
, vhosts
, messages
etc., ni sur d' autres queues
, vous pouvez reset
via commandline en exécutant les commandes suivantes dans l' ordre:
AVERTISSEMENT: en plus des files d'attente, cela supprimera également tout users
et vhosts
, que vous avez configuré sur votre serveur RabbitMQ; et supprimera tout élément persistantmessages
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
La documentation rabbitmq indique que la reset
commande:
Renvoie un nœud RabbitMQ à son état vierge.
Supprime le nœud de tout cluster auquel il appartient, supprime toutes les données de la base de données de gestion, telles que les utilisateurs et les hôtes virtuels configurés, et supprime tous les messages persistants.
Alors, soyez prudent en l'utilisant.
Installez le package pika comme suit
L'installation dépend des packages pip et git-core, vous devrez peut-être d'abord les installer.
Sur Ubuntu:
Sur Debian:
Sous Windows: pour installer easy_install, exécutez le programme d'installation de MS Windows pour setuptools
la source
Dans les versions RabbitMQ> 3.0, vous pouvez également utiliser l'API HTTP si le plugin rabbitmq_management est activé. Assurez-vous simplement de définir le type de contenu sur 'application / json' et de fournir le vhost et le nom de la file d'attente:
IE Utilisation de curl avec un hôte virtuel 'test' et un nom de file d'attente 'testqueue':
la source
administrator
sinon il ne peut pas utiliser certaines parties de l'API.$ curl -i -u 'user:pass' -H "content-type:application/json" -XDELETE 'http://localhost:15672/api/queues/vhostname/name.portal' HTTP/1.1 204 No Content Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact) Date: Wed, 30 Jul 2014 11:23:47 GMT Content-Type: application/json Content-Length: 0
Cependant la file d'attente reste :( - des idées?Il y a rabbitmqadmin qui est agréable à travailler depuis la console.
Si vous ssh / connectez-vous au serveur sur lequel vous avez installé rabbit, vous pouvez le télécharger à partir de:
et enregistrez-le dans / usr / local / bin / rabbitmqadmin
Alors tu peux courir
Habituellement, cela nécessite sudo.
Si vous voulez éviter de saisir votre nom d'utilisateur et votre mot de passe, vous pouvez utiliser config
Tout cela en supposant que vous avez le fichier ** /var/lib/rabbitmq/.rabbitmqadmin.conf** et que vous disposez d'un minimum
EDIT: À partir du commentaire de @ user299709, il peut être utile de souligner que l'utilisateur doit être marqué comme 'administrateur' dans rabbit. ( https://www.rabbitmq.com/management.html )
la source
Un bref résumé de la suppression rapide de la file d'attente avec toutes les valeurs par défaut de l'hôte qui exécute le serveur RMQ:
Pour supprimer toutes les files d'attente correspondant à un modèle dans un hôte virtuel donné (par exemple contenant 'amq.gen' dans l'hôte virtuel racine):
la source
Vous déclarez qu'une file d'attente existe (et la créez si ce n'est pas le cas) à l'aide de queue.declare . Si vous définissez à l'origine la suppression automatique sur false, un nouvel appel de queue.declare avec autodelete true entraînera une erreur logicielle et le courtier fermera le canal.
Vous devez utiliser queue.delete maintenant pour le supprimer.
Consultez la documentation de l'API pour plus de détails:
Si vous utilisez un autre client, vous devrez trouver la méthode équivalente. Comme cela fait partie du protocole, il devrait être là, et cela fait probablement partie de Channel ou l'équivalent.
Vous pouvez également consulter le reste de la documentation, en particulier la section Mise en route qui couvre de nombreux cas d'utilisation courants.
Enfin, si vous avez une question et que vous ne trouvez pas la réponse ailleurs, vous devriez essayer de publier sur la liste de diffusion RabbitMQ Discuss . Les développeurs font de leur mieux pour répondre à toutes les questions qui y sont posées.
la source
Une autre option serait d'activer le management_plugin et de s'y connecter via un navigateur. Vous pouvez voir toutes les files d'attente et les informations les concernant. Il est possible et simple de supprimer des files d'attente de cette interface.
la source
J'ai généralisé un peu plus la méthode JavaScript / jQuery de Piotr Stapp, en l'encapsulant dans une fonction et en la généralisant un peu.
Cette fonction utilise l'API HTTP RabbitMQ pour interroger les files d'attente disponibles dans un fichier donné
vhost
, puis les supprimer en fonction d'une optionqueuePrefix
:Une fois que vous avez collé cette fonction dans la console JavaScript de votre navigateur sur votre page de gestion RabbitMQ, vous pouvez l'utiliser comme ceci:
Supprimer toutes les files d'attente dans '/' vhost
Supprimer toutes les files d'attente dans '/' vhost commençant par 'test'
Supprimer toutes les files d'attente dans l'hôte virtuel 'dev' commençant par 'foo'
Veuillez utiliser ceci à vos propres risques!
la source
Le plugin de gestion (interface web) vous donne un lien vers un script python. Vous pouvez l'utiliser pour supprimer des files d'attente. J'ai utilisé ce modèle pour supprimer beaucoup de files d'attente:
la source
J'utilise cet alias dans
.profile
:où
qclean.py
a le code suivant:Il s'agit essentiellement d'une version itérative du code de Shweta B. Patil.
la source
installer
et accédez à http: // localhost: 15672 / # / queues si vous utilisez localhost. le mot de passe par défaut sera
username: guest
,password: guest
et allez dans l'onglet files d'attente et supprimez la file d'attente.la source
J'espère que cela pourrait aider quelqu'un.
J'ai essayé les morceaux de code ci-dessus mais je n'ai fait aucun streaming.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Je génère un fichier qui contient tous les noms de files d'attente et les parcourt ligne par ligne pour les supprimer. Pour les boucles,
while read ...
je ne l'ai pas fait pour moi. Il s'arrêtait toujours au premier nom de file d'attente.Aussi, si vous souhaitez supprimer une seule file d'attente, les solutions ci-dessus vous aideront (python, Java ...) et aussi
do sudo rabbitmqctl delete_queue queue_name
. J'utiliserabbitmqctl
au lieu derabbitmqadmin
.la source
Avec le plugin rabbitmq_management installé, vous pouvez l'exécuter pour supprimer toutes les files d'attente indésirables:
Décomposons la commande:
rabbitmqctl list_queues -p vhost_name
listera toutes les files d'attente et le nombre de tâches qu'elles ont actuellement.grep -v "fast\|medium\|slow"
filtrera les files d'attente que vous ne voulez pas supprimer, disons que nous voulons supprimer toutes les files d'attente sans les mots rapide , moyen ou lent .tr "[:blank:]" " "
normalisera le délimiteur sur rabbitmqctl entre le nom de la file d'attente et le nombre de tâches qu'il y acut -d " " -f 1
va diviser chaque ligne par l'espace et choisir la 1ère colonne (le nom de la file d'attente)xargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost>/{}
récupérera le nom de la file d'attente et le placera là où nous avons défini le{}
caractère en supprimant toutes les files d'attente non filtrées dans le processus.Assurez-vous que l'utilisateur utilisé dispose des autorisations d'administrateur.
la source
Je l'ai fait de manière différente, car je n'avais accès qu'à la page Web de gestion. J'ai créé un simple "extrait" qui supprime les files d'attente en Javascript. C'est ici:
Toutes mes files d'attente étaient au format: PREFIX_0001 à PREFIX_0XXX
la source