Eu instalei rabbitmqadmin
e pude listar todas as trocas e filas. Como posso usar rabbitmqadmin
ou rabbitmqctl
excluir todas as filas.
rabbitmq
rabbitmqctl
Cory
fonte
fonte
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'
ou algo assim.Com
rabbitmqadmin
você pode removê-los com este one-liner:fonte
egrep
, portanto, meu comando será parecido com este:rabbitmqadmin -f tsv -q list queues name | egrep "%search word%" | while read queue; do rabbitmqadmin -q delete queue name=${queue}; done
Na verdade, é super fácil com o plug - in e as políticas de gerenciamento :
Ir para o Console de Gerenciamento (localhost: 15672)
Saltar guia Admin
Guia Saltar Políticas (no lado direito)
Adicionar política
Campos de preenchimento
Salve
fonte
Tente o seguinte:
fonte
*** Not found: /api/queues/%2F/name
porque a saída é uma tabela ASCII com uma coluna "nome". Apertei o comandorabbitmqadmin list queues name | awk '!/--|name/ {print $2}' | xargs -I qn rabbitmqadmin delete queue name=qn
para corrigi-lo.rabbitmqadmin list queues name | awk {'print$2'} | egrep [^name] | xargs -I qname rabbitmqadmin delete queue name=qname
Se você não tiver o rabbitmqadmin instalado, tente limpar as filas com o rabbitmqctl:
rabbitmqctl list_queues | awk '{ print $1 }' | xargs -L1 rabbitmqctl purge_queue
fonte
delete_queue
nempurge_queue
comandosrabbitmqctl
. Gostaria de limpar um monte de filas que parecem ser gerados automaticamente e eu não gostaria de instalar software extra, comorabbitmqadmin
...rabbitmqctl purge_queue
trabalhou aqui manualmente. Eu só precisava para adicionar -p <virtual-host>delete_queue
epurge_queue
estão disponíveis emrabbitmqctl
e acabo de executá-los com sucesso. Talvez você esteja em uma versão antiga.Eu criei um deleteRabbitMqQs.sh, que aceita argumentos para pesquisar na lista de filas, selecionando apenas os que correspondem ao padrão desejado. Se você não oferecer argumentos, ele excluirá todos eles! Ele mostra a lista de filas que está prestes a excluir, permitindo que você saia antes de fazer qualquer coisa destrutiva.
Se você quiser uma correspondência diferente com os argumentos passados, poderá alterar o grep na linha quatro. Ao excluir todas as filas, ele não excluirá aquelas com três espaços consecutivos, porque achei que a eventualidade seria mais rara do que as pessoas que têm o rabbitmqctl imprimindo sua saída em idiomas diferentes.
Aproveitar!
fonte
Se você está tentando excluir filas porque não são usadas e não deseja redefinir, uma opção é definir a TTL da fila muito baixa por meio de uma política, aguarde a exclusão automática das filas depois que o TTL for aprovado e remova a política ( https://www.rabbitmq.com/ttl.html ).
Para remover a política
Note que isto só funciona para não utilizado filas
Informações originais aqui: http://rabbitmq.1065348.n5.nabble.com/Deleting-all-queues-in-rabbitmq-td30933.html
fonte
Na versão 3.7.10 do Rabbit, você pode executar o comando abaixo com permissão de root:
fonte
Aqui está uma maneira de fazer isso com o PowerShell. o URL pode precisar ser atualizado
fonte
Você pode usar rabbitmqctl eval como abaixo:
O item acima excluirá todas as filas vazias em todos os vhosts que tenham um nome começando com "prefix-". Você pode editar as variáveis IfUnused, IfEmpty e MatchRegex conforme sua exigência.
fonte
rabbitmqadmin
não estiver acessível.Removendo todas as filas usando o liner rabbitmqctl one
fonte
Caso você queira apenas limpar as filas que não estão vazias (muito mais rápido):
Para mim, leva de 2 a 3 segundos para limpar uma fila (tanto vazias quanto não vazias), portanto, iterar através de 50 filas é uma dor, enquanto eu só preciso limpar 10 delas (40/50 estão vazias).
fonte
Eu tentei rabbitmqctl e redefinir comandos, mas eles são muito lentos.
Esta é a maneira mais rápida que encontrei (substitua seu nome de usuário e senha):
Nota: Isso funciona apenas com o vhost padrão /
fonte
Para listar filas,
Para excluir uma fila,
fonte
Aqui está uma versão mais rápida (usando
parallel
install sudo apt-get install parallel) expandindo a excelente resposta 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)
fonte
Este comando exclui todas as suas filas
Esse script é super simples porque usa
-f bash
, o que gera as filas como uma lista.Então usamos
xargs -n1
para dividir isso em várias variáveisEm seguida, usamos
xargs -I{}
o comando a seguir e o substituímos{}
.fonte
http://yourhost:15672/cli/
e fazer o download.Você precisa servidor RabbitMQ não redefinido para eliminar não-duráveis filas. Simplesmente pare o servidor e inicie novamente e ele removerá todas as filas não duráveis disponíveis.
fonte
Para quem tem um problema com a instalação do rabbitmqadmin, instale primeiro o python.
Os usuários do sistema operacional do tipo UNIX precisam copiar o rabbitmqadmin para um diretório no PATH, por exemplo, / usr / local / bin.
Os usuários do Windows precisarão garantir que o Python esteja em seu PATH e invocar rabbitmqadmin como python.exe rabbitmqadmin.
Então
http://{hostname}:15672/cli/rabbitmqadmin
fazer o download.Para listar filas
python rabbitmqadmin list queues
.Para excluir a fila
python rabbitmqadmin delete queue name=Name_of_queue
Para excluir todas as filas
1- Declarar política
2- Remova a política
fonte
Existe uma maneira de remover todas as filas e trocas sem scripts e redefinição completa. Você pode simplesmente excluir e recriar um host virtual a partir da interface de administração. Isso funcionará mesmo para o vhost
/
.A única coisa que você precisará restaurar são as permissões para o vhost recém-criado.
fonte
Ok, qualificador importante para esta resposta: A pergunta pede para usar rabbitmqctl OU rabbitmqadmin para resolver isso, minha resposta precisava usar as duas. Além disso, observe que isso foi testado no MacOS 10.12.6 e nas versões do rabbitmqctl e rabbitmqadmin que são instaladas ao instalar o rabbitmq com o Homebrew e que é identificado
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
fonte
Outra opção é excluir o vhost associado às filas. Isso excluirá tudo o que estiver associado ao vhost, portanto, seja avisado, mas é fácil e rápido.
OBSERVAÇÃO: a equipe RabbitMQ monitora a
rabbitmq-users
lista de correspondência e, às vezes, responde a perguntas no StackOverflow.fonte
Eu tentei os trechos de código acima, mas não fiz nenhum streaming.
sudo rabbitmqctl list_queues | awk '{print $1}' > queues.txt; for line in $(cat queues.txt); do sudo rabbitmqctl delete_queue "$line"; done
.Eu gero um arquivo que contém todos os nomes da fila e percorre linha por linha para excluí-los. Para os loops,
while read ...
não fez isso por mim. Sempre estava parando no primeiro nome da fila.fonte
fonte