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?
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.
Vous devez rendre consommateur ack
les (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.
Une fois qu'il n'y a plus de message "prêt" dans la file d'attente, supprimez-le et recréez-le.
Vous devez remettre les messages en file d'attente avant de pouvoir les purger:
Comme alternative, cela ne nécessite pas d'attendre:
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.