uso usar tutorial rabbit mensajes example como cola casos queue rabbitmq

usar - rabbitmq queue



Eliminar colas en RabbitMQ (13)

Con el plugin rabbitmq_management instalado, puede ejecutar esto para eliminar todas las colas no deseadas:

rabbitmqctl list_queues -p vhost_name |/ grep -v "fast/|medium/|slow" |/ tr "[:blank:]" " " |/ cut -d " " -f 1 |/ xargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost_name>/{}

Vamos a romper el comando:

rabbitmqctl list_queues -p vhost_name todas las colas y cuántas tareas tienen actualmente.

grep -v "fast/|medium/|slow" filtrará las colas que no desea eliminar, digamos que queremos eliminar cada cola sin las palabras rápido , medio o lento .

tr "[:blank:]" " " normalizará el delimitador en rabbitmqctl entre el nombre de la cola y la cantidad de tareas que hay

cut -d " " -f 1 dividirá cada línea por el espacio en blanco y escogerá la primera columna (el nombre de la cola)

xargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost>/{} recogerá el nombre de la cola y lo establecerá en donde establecemos el carácter {} eliminando todas las colas no filtradas en el proceso.

Asegúrese de que el usuario utilizado tenga permisos de administrador.

Tengo algunas colas ejecutándose con RabbitMQ. Algunos de ellos no sirven de nada ahora, ¿cómo puedo eliminarlos? Desafortunadamente no había configurado la opción auto_delete .

Si lo configuro ahora, ¿se eliminará?

¿Hay alguna manera de eliminar esas colas ahora?


El complemento de gestión (interfaz web) le proporciona un enlace a un script de python. Puede usarlo para eliminar colas. Usé este patrón para eliminar muchas colas:

python tmp/rabbitmqadmin --vhost=... --username=... --password=... list queues > tmp/q vi tmp/q # remove all queues which you want to keep cut -d'' '' -f4 tmp/q| while read q; do python tmp/rabbitmqadmin --vhost=... --username=... --password=... delete queue name=$q; done


En las versiones RabbitMQ> 3.0, también puede utilizar la API HTTP si el complemento rabbitmq_management está habilitado. Solo asegúrese de establecer el tipo de contenido en ''application / json'' y proporcione el nombre de host y vhost:

IE Usando curl con una ''prueba'' de vhost y nombre de cola ''testqueue'':

$ curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/test/testqueue HTTP/1.1 204 No Content Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue) Date: Tue, 16 Apr 2013 10:37:48 GMT Content-Type: application/json Content-Length: 0


Hay rabbitmqadmin que es bueno para trabajar desde la consola.

Si ingresas ssh / iniciar sesión en el servidor donde tienes instalado rabbit, puedes descargarlo desde:

http://{server}:15672/cli/rabbitmqadmin

y guárdelo en / usr / local / bin / rabbitmqadmin

Entonces puedes correr

rabbitmqadmin -u {user} -p {password} -V {vhost} delete queue name={name}

Por lo general, requiere sudo.

Si quiere evitar escribir su nombre de usuario y contraseña, puede usar config

rabbitmqadmin -c /var/lib/rabbitmq/.rabbitmqadmin.conf -V {vhost} delete queue name={name}

Todo bajo la suposición de que tiene el archivo ** /var/lib/rabbitmq/.rabbitmqadmin.conf** y tiene el mínimo descubierto

hostname = localhost port = 15672 username = {user} password = {password}

EDITAR: A partir del comentario de @ user299709, puede ser útil señalar que el usuario debe etiquetarse como ''administrador'' en el conejo. ( https://www.rabbitmq.com/management.html )


He generalizado un poco más el método JavaScript / jQuery de Piotr Stapp, encapsulándolo en una función y generalizándolo un poco.

Esta función utiliza la API de RabbitMQ HTTP para consultar las colas disponibles en un vhost determinado y luego eliminarlas en función de un queuePrefix opcional:

function deleteQueues(vhost, queuePrefix) { if (vhost === ''/'') vhost = ''%2F''; // html encode forward slashes $.ajax({ url: ''/api/queues/''+vhost, success: function(result) { $.each(result, function(i, queue) { if (queuePrefix && !queue.name.startsWith(queuePrefix)) return true; $.ajax({ url: ''/api/queues/''+vhost+''/''+queue.name, type: ''DELETE'', success: function(result) { console.log(''deleted ''+ queue.name)} }); }); } }); };

Una vez que pegue esta función en la consola de JavaScript de su navegador mientras está en la página de administración de RabbitMQ, puede usarla así:

Eliminar todas las colas en ''/'' vhost

deleteQueues(''/'');

Eliminar todas las colas en ''/'' vhost comenzando con ''prueba''

deleteQueues(''/'', ''test'');

Eliminar todas las colas en ''dev'' vhost que comienza con ''foo''

deleteQueues(''dev'', ''foo'');

Por favor, use esto bajo su propio riesgo!


Lo hice de otra manera, porque solo tenía acceso a la página web de administración. Creé un "fragmento" simple que elimina colas en Javascript. Aquí está:

function zeroPad(num, places) { var zero = places - num.toString().length + 1; return Array(+(zero > 0 && zero)).join("0") + num; } var queuePrefix = "PREFIX" for(var i=0; i<255; i++){ var queueid = zeroPad(i, 4); $.ajax({url: ''/api/queues/vhost/''+queuePrefix+queueid, type: ''DELETE'', success: function(result) {console.log(''deleted ''+queuePrefix+queueid)}}); }

Todas mis colas estaban en formato: PREFIX_0001 a PREFIX_0XXX


Otra opción sería habilitar el gestor_plugin y conectarse a él a través de un navegador. Puede ver todas las colas e información sobre ellos. Es posible y simple eliminar colas de esta interfaz.


Si no le importan las otras colas, puede eliminarlas a través de la línea de comandos ejecutando los siguientes comandos en orden:

Advertencia: esto también eliminará cualquier usuario y host que haya configurado en su servidor de conejos

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app

La documentación de rabbitmq dice que el comando de reset :

Elimina el nodo de cualquier clúster al que pertenece, elimina todos los datos de la base de datos de administración, como usuarios configurados y vhosts, y elimina todos los mensajes persistentes.

Por lo tanto, ten cuidado de usarlo.


Un breve resumen de la eliminación rápida de cola con todos los valores predeterminados del host que ejecuta el servidor RMQ:

curl -O http://localhost:15672/cli/rabbitmqadmin chmod u+x rabbitmqadmin ./rabbitmqadmin delete queue name=myQueueName

Para eliminar todas las colas que coinciden con un patrón en un host dado (por ejemplo, que contiene ''amq.gen'' en el vhost raíz):

rabbitmqctl -p / list_queues | grep ''amq.gen'' | cut -f1 -d$''/t'' | xargs -I % ./rabbitmqadmin -V / delete queue name=%


Usted afirma que existe una cola (y la crea si no) utilizando queue.declare . Si originalmente configuró auto-delete en false, la invocación de queue.declare nuevamente con autodelete true dará como resultado un error suave y el bróker cerrará el canal.

Necesita usar queue.delete ahora para eliminarlo.

Consulte la documentación de la API para más detalles:

Si usa otro cliente, necesitará encontrar el método equivalente. Como es parte del protocolo, debería estar allí, y probablemente sea parte de Channel o su equivalente.

También puede consultar el resto de la documentación, en particular la sección Introducción , que cubre muchos casos de uso común.

Finalmente, si tiene una pregunta y no puede encontrar la respuesta en otro lugar, intente publicarla en la lista de correo RabbitMQ Discuss . Los desarrolladores hacen todo lo posible para responder todas las preguntas que se hacen allí.


Yo uso este alias en .profile :

alias qclean="rabbitmqctl list_queues | python ~/bin/qclean.py"

donde qclean.py tiene el siguiente código:

import sys import pika connection = pika.BlockingConnection(pika.ConnectionParameters(''localhost'')) channel = connection.channel() queues = sys.stdin.readlines()[1:-1] for x in queues: q = x.split()[0] print ''Deleting %s...'' %(q) channel.queue_delete(queue=q) connection.close()

Básicamente, esta es una versión iterativa del código de Shweta B. Patil.


instalar

$ sudo rabbitmq-plugins enable rabbitmq_management

y vaya a localhost:15672/#/queues si está usando localhost. la contraseña predeterminada será username: guest , password: guest e ir a la pestaña de colas y eliminar la cola.


import pika connection = pika.BlockingConnection(pika.ConnectionParameters( ''localhost'')) channel = connection.channel() channel.queue_delete(queue=''queue-name'') connection.close()

Instale el paquete pika de la siguiente manera

$ sudo pip install pika==0.9.8

La instalación depende de los paquetes pip y git-core, es posible que deba instalarlos primero.

En Ubuntu:

$ sudo apt-get install python-pip git-core

En Debian:

$ sudo apt-get install python-setuptools git-core $ sudo easy_install pip

En Windows: para instalar easy_install, ejecute el instalador de MS Windows para las herramientas de configuración

> easy_install pip > pip install pika==0.9.8