Instalé rabbitmqadmin
y pude enumerar todos los intercambios y colas. ¿Cómo puedo usar rabbitmqadmin
o rabbitmqctl
eliminar todas las colas?
rabbitmq
rabbitmqctl
Cory
fuente
fuente
rabbitmqctl list_queues name messages messages_ready \ messages_unacknowledged
rabbitmqctl list_queues | grep 0 | awk '{print $1}' | xargs -I qn rabbitmqadmin delete queue name=qn
grep $'\t0'
o algo.Con
rabbitmqadmin
usted puede eliminarlos con este one-liner:fuente
egrep
, por lo que mi comando se verá así:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Realmente súper fácil con plugins de administración y políticas:
Goto Management Console (localhost: 15672)
Ir a la pestaña Admin
Ir a la pestaña Políticas (en el lado derecho)
Agregar política
Rellenar campos
Salvar
fuente
Prueba esto:
fuente
*** Not found: /api/queues/%2F/name
porque el resultado es una tabla ASCII con una columna "nombre". Modifiqué el comandorabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
para arreglarlo.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Si no tiene rabbitmqadmin instalado, intente purgar las colas con rabbitmqctl:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
fuente
delete_queue
nipurge_queue
comandos enrabbitmqctl
. Me gustaría eliminar muchas colas que parecen generarse automáticamente y no me gustaría instalar software adicional comorabbitmqadmin
...rabbitmqctl purge_queue
Trabajó aquí manualmente. Solo necesitaba agregar -p <virtual-host>delete_queue
ypurge_queue
están disponibles enrabbitmqctl
y acabo de ejecutar con éxito. Quizás estés en una versión antigua.Si está tratando de eliminar colas porque no se utilizan y no desea restablecer, una opción es establecer el TTL de cola muy bajo a través de una política, espere a que las colas se eliminen automáticamente una vez que se pasa el TTL y luego elimine la política ( https://www.rabbitmq.com/ttl.html ).
Para eliminar la política
Tenga en cuenta que esto solo funciona para colas no utilizadas
Información original aquí: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
fuente
Hice un deleteRabbitMqQs.sh, que acepta argumentos para buscar en la lista de colas, seleccionando solo los que coinciden con el patrón que desea. Si no ofrece argumentos, los eliminará a todos. Le muestra la lista de colas que está a punto de eliminar, permitiéndole salir antes de hacer algo destructivo.
Si desea una coincidencia diferente con los argumentos que pasa, puede alterar el grep en la línea cuatro. Al eliminar todas las colas, no eliminará las que tengan tres espacios consecutivos en ellas, porque pensé que la eventualidad sería más rara que las personas que tienen rabbitmqctl imprimiendo su salida en diferentes idiomas.
¡Disfrutar!
fuente
En Rabbit versión 3.7.10 puede ejecutar el siguiente comando con permiso de root:
fuente
Aquí hay una manera de hacerlo con PowerShell. la URL puede necesitar ser actualizada
fuente
Puede usar rabbitmqctl eval de la siguiente manera:
Lo anterior eliminará todas las colas vacías en todos los vhosts que tengan un nombre que comience con "prefijo-". Puede editar las variables IfUnused, IfEmpty y MatchRegex según sus requisitos.
fuente
rabbitmqadmin
no es accesible.Eliminando todas las colas usando rabbitmqctl one liner
fuente
En caso de que solo desee purgar las colas que no están vacías (mucho más rápido):
Para mí, me toma 2-3 segundos purgar una cola (tanto vacías como no vacías), por lo que iterar a través de 50 colas es un dolor, mientras que solo necesito purgar 10 de ellas (40/50 están vacías).
fuente
Intenté los comandos rabbitmqctl y reset pero son muy lentos.
Esta es la forma más rápida que encontré (reemplace su nombre de usuario y contraseña):
Nota: Esto solo funciona con el vhost / default
fuente
Para enumerar colas,
Para eliminar una cola,
fuente
Aquí hay una versión más rápida (usando
parallel
install sudo apt-get install parallel) ampliando la excelente respuesta de @admenvaparallel -j 50 rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -q delete queue name={} ::: $(rabbitmqadmin -H YOUR_HOST_OR_LOCALHOST -f tsv -q list queues name)
fuente
Este comando elimina todas tus colas
Este script es súper simple porque usa
-f bash
, que genera las colas como una lista.Luego usamos
xargs -n1
para dividir eso en múltiples variablesLuego usamos
xargs -I{}
que ejecutará el siguiente comando y lo reemplazaremos{}
en el comando.fuente
http://yourhost:15672/cli/
y descargarlo.No necesita restablecer el servidor rabbitmq para eliminar colas no duraderas . Simplemente detenga el servidor y comience de nuevo y eliminará todas las colas no duraderas disponibles.
fuente
Para aquellos que tienen un problema con la instalación de rabbitmqadmin, primero debe instalar python.
Los usuarios de sistemas operativos tipo UNIX necesitan copiar rabbitmqadmin a un directorio en PATH, por ejemplo / usr / local / bin.
Los usuarios de Windows deberán asegurarse de que Python esté en su RUTA e invocar rabbitmqadmin como python.exe rabbitmqadmin.
Luego
http://{hostname}:15672/cli/rabbitmqadmin
para descargar.Para enumerar colas
python rabbitmqadmin list queues
.Para eliminar la cola
python rabbitmqadmin delete queue name=Name_of_queue
Para eliminar todas las colas
1- Declarar política
2- Eliminar la política
fuente
Hay una manera de eliminar todas las colas e intercambios sin scripts y reinicio completo. Simplemente puede eliminar y volver a crear un host virtual desde la interfaz de administración. Esto funcionará incluso para vhost
/
.Lo único que necesitará restaurar son los permisos para el vhost recién creado.
fuente
De acuerdo, calificador importante para esta respuesta: la pregunta pide usar rabbitmqctl O rabbitmqadmin para resolver esto, mi respuesta necesitaba usar ambos. Además, tenga en cuenta que esto se probó en MacOS 10.12.6 y las versiones de rabbitmqctl y rabbitmqadmin que se instalan al instalar rabbitmq con Homebrew y que se identifica
brew list --versions
como rabbitmq 3.7.0rabbitmqctl list_queues -p <VIRTUAL_HOSTNAME> name | sed 1,2d | xargs -I qname rabbitmqadmin --vhost <VIRTUAL_HOSTNAME> delete queue name=qname
fuente
Otra opción es eliminar el vhost asociado con las colas. Esto eliminará todo lo relacionado con el vhost, así que ten cuidado, pero es fácil y rápido.
NOTA: el equipo de RabbitMQ supervisa la
rabbitmq-users
lista de correo y solo a veces responde preguntas sobre StackOverflow.fuente
Probé las piezas de código anteriores pero no hice ninguna transmisión.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Genero un archivo que contiene todos los nombres de la cola y los recorre línea por línea para eliminarlos. Para los bucles,
while read ...
no lo hizo por mí. Siempre se detenía en el primer nombre de la cola.fuente
fuente