Tenho algumas filas em execução com RabbitMQ. Alguns deles são inúteis agora, como posso excluí-los? Infelizmente, não havia definido a auto_delete
opção.
Se eu definir agora, ele será excluído?
Existe uma maneira de excluir essas filas agora?
Se você não se preocupa com os dados no banco de dados de gerenciamento; ou seja users
, vhosts
, messages
etc., e nem sobre outra queues
, então você pode reset
via linha de comando, executando os seguintes comandos em ordem:
AVISO: Além das filas, isso também removerá todas as
users
evhosts
, você configurou em seu servidor RabbitMQ; e irá deletar qualquer persistentemessages
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
A documentação do rabbitmq diz que o reset
comando:
Retorna um nó RabbitMQ ao seu estado virgem.
Remove o nó de qualquer cluster ao qual pertença, remove todos os dados do banco de dados de gerenciamento, como usuários e vhosts configurados, e exclui todas as mensagens persistentes.
Portanto, tome cuidado ao usá-lo.
Instale o pacote pika como segue
A instalação depende dos pacotes pip e git-core, você pode precisar instalá-los primeiro.
No Ubuntu:
No Debian:
No Windows: para instalar easy_install, execute o MS Windows Installer para ferramentas de configuração
fonte
Nas versões RabbitMQ> 3.0, você também pode utilizar a API HTTP se o plugin rabbitmq_management estiver habilitado. Apenas certifique-se de definir o tipo de conteúdo como 'application / json' e fornecer o vhost e o nome da fila:
IE usando curl com um vhost 'test' e nome de fila 'testqueue':
fonte
administrator
caso contrário, ele não poderá usar certas partes da 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
No entanto, a fila ainda permanece :( - alguma ideia?Existe o rabbitmqadmin que é bom para trabalhar no console.
Se você efetuar ssh / logar no servidor onde instalou o rabbit, poderá baixá-lo em:
e salve-o em / usr / local / bin / rabbitmqadmin
Então você pode correr
Normalmente, requer sudo.
Se você quiser evitar digitar seu nome de usuário e senha, você pode usar config
Tudo isso supondo que você tenha o arquivo ** /var/lib/rabbitmq/.rabbitmqadmin.conf** e tenha o mínimo
EDITAR: A partir do comentário de @ user299709, pode ser útil apontar que o usuário deve ser marcado como 'administrador' no coelho. ( https://www.rabbitmq.com/management.html )
fonte
Você afirma que existe uma fila (e a cria se não existir) usando queue.declare . Se você configurou originalmente a exclusão automática para false, chamar queue.declare novamente com autodelete true resultará em um erro de software e o broker fechará o canal.
Você precisa usar queue.delete agora para excluí-lo.
Consulte a documentação da API para obter detalhes:
Se você usar outro cliente, precisará encontrar o método equivalente. Como faz parte do protocolo, deve estar lá e provavelmente faz parte do Canal ou equivalente.
Você também pode dar uma olhada no restante da documentação, em particular na seção Primeiros passos , que cobre muitos casos de uso comuns.
Finalmente, se você tem uma pergunta e não consegue encontrar a resposta em outro lugar, você deve tentar postar na lista de discussão RabbitMQ Discuss . Os desenvolvedores fazem o possível para responder a todas as perguntas feitas lá.
fonte
Um breve resumo para exclusão rápida da fila com todos os valores padrão do host que está executando o servidor RMQ:
Para excluir todas as filas que correspondem a um padrão em um determinado vhost (por exemplo, contendo 'amq.gen' no vhost raiz):
fonte
Outra opção seria habilitar o management_plugin e conectar-se a ele por meio de um navegador. Você pode ver todas as filas e informações sobre elas. É possível e simples excluir filas desta interface.
fonte
Eu generalizei o método JavaScript / jQuery de Piotr Stapp um pouco mais, encapsulando-o em uma função e generalizando-o um pouco.
Esta função usa a API RabbitMQ HTTP para consultar as filas disponíveis em um determinado
vhost
e excluí-las com base em um opcionalqueuePrefix
:Depois de colar esta função no console JavaScript do seu navegador enquanto estiver na página de gerenciamento do RabbitMQ, você pode usá-la assim:
Exclua todas as filas em '/' vhost
Exclua todas as filas em '/' vhost começando com 'test'
Exclua todas as filas em 'dev' vhost começando com 'foo'
Use por sua própria conta e risco!
fonte
O plugin de gerenciamento (interface da web) fornece um link para um script python. Você pode usá-lo para excluir filas. Usei este padrão para remover muitas filas:
fonte
Eu uso este alias em
.profile
:onde
qclean.py
tem o seguinte código:Essencialmente, esta é uma versão iterativa do código de Shweta B. Patil.
fonte
instalar
e vá para http: // localhost: 15672 / # / queues se estiver usando localhost. a senha padrão será
username: guest
,password: guest
e vá para a guia filas e excluir a fila.fonte
Espero que possa ajudar alguém.
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 de filas e faço um loop, linha por linha, para excluí-los. Para os loops,
while read ...
não fez isso para mim. Ele sempre parava no primeiro nome da fila.Além disso, se você deseja excluir uma única fila, as soluções acima irão ajudar (python, Java ...) e também
do sudo rabbitmqctl delete_queue queue_name
. Estou usando emrabbitmqctl
vez derabbitmqadmin
.fonte
Com o plug-in rabbitmq_management instalado, você pode executá-lo para excluir todas as filas indesejadas:
Vamos quebrar o comando:
rabbitmqctl list_queues -p vhost_name
irá listar todas as filas e quantas tarefas eles têm atualmente.grep -v "fast\|medium\|slow"
irá filtrar as filas que você não deseja excluir, digamos que queremos excluir todas as filas sem as palavras rápido , médio ou lento .tr "[:blank:]" " "
irá normalizar o delimitador em rabbitmqctl entre o nome da fila e a quantidade de tarefas que existemcut -d " " -f 1
irá dividir cada linha pelo espaço em branco e escolher a 1ª coluna (o nome da fila)xargs -I {} curl -i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/queues/<vhost>/{}
pegará o nome da fila e o definirá onde definimos o{}
caractere, excluindo todas as filas não filtradas no processo.Certifique-se de que o usuário utilizado tenha permissões de administrador.
fonte
Fiz de forma diferente, pois só tinha acesso à página de gerenciamento. Criei um "snippet" simples que exclui filas em Javascript. Aqui está:
Todas as minhas filas estavam no formato: PREFIX_0001 a PREFIX_0XXX
fonte