2016-08-22 17 views
2

Ich benutze die amqplib-Bibliothek für nodejs, um mit RabbitMQ zu arbeiten. Ich versuche, ob eine Warteschlange von checkQueue mit der Funktion besteht zu überprüfen:amqplib - wie überprüft man sicher, ob eine Queue existiert

mychannel.checkQueue('xxx', function (err, ok) { 
    console.log(err); 
    console.log(ok) 
}); 

Aber es wirft nicht nur ein Fehler, sondern schließt auch den Kanal. Wie kann ich sicher prüfen, ob die Warteschlange existiert?

Antwort

0

Sie können nicht ohne Risiko den Kanal zu zerstören. Die Problemumgehung besteht darin, einen temporären Kanal zu erstellen, mit dem Sie die Überprüfung durchführen können.

Ein Kommentar von amqp.node dev: (https://github.com/squaremo/amqp.node/issues/280)

Das Verhalten von checkQueue durch das Protokoll diktiert wird, aber es kann um gearbeitet werden. Eine Taktik besteht darin, einen "Opfer" -Extra-Kanal mit zu erstellen, der testet, ob die Warteschlange existiert. Sobald Sie die Antwort haben, können Sie den zusätzlichen Kanal wegwerfen, oder es für weitere Tests herum behalten.

Verwandte Themen