web-dev-qa-db-fra.com

Rabbitmq - purge une file d'attente de tous ses messages non archivés

J'ai des milliers de messages non archivés dans mon env. Dev que je ne peux pas redémarrer.
Existe-t-il un moyen de supprimer (purger) tous les messages, même s'ils ne sont pas reconnus?

24
Bick

Fermez le canal sur lequel résident les messages non mis en file d'attente, ce qui les placera dans la file d'attente, puis appelle purge.

24
Acorn

Vous devez rendre consommateur ackles (ou nack) et seulement après cela, ils seront supprimés. Vous pouvez également arrêter les consommateurs et purger complètement la file d'attente.

Si vous cherchez un moyen de purger tous les messages non archivés, il n’existe pas de telle fonctionnalité, ni dans le protocole AMQP, ni dans RabbitMQ.

Il semble que votre client soit à l'origine du problème. Vous devez donc l'ajuster (réécrire) pour que le message soit diffusé immédiatement après son traitement ou son échec.

10
pinepain

Une fois qu'il n'y a plus de message "prêt" dans la file d'attente, supprimez-le et recréez-le.

2
mieciu

Vous devez remettre les messages en file d'attente avant de pouvoir les purger:

Comme alternative, cela ne nécessite pas d'attendre:

  • delete et recrée la file d'attente
  • redémarrer le serveur
0
Dej

Vous devez appeler basic.recover pour forcer tous les messages non archivés à être remis en file d'attente sur un canal en échec. Tenez compte des erreurs concernant cette fonction spécifiant que seul le mode de mise en attente est pris en charge par RabbitMQ.

0
jonharson