Ich versuche, sinnvollen Code zu erstellen, wenn RabbitMQ beginnt, Verbindungen zu blockieren, aufgrund von Datenträger-Level oder Speicher-Wasserzeichenalarm.RabbitMQ PHP-Treiber (AMQP): blockierte Verbindungen
Es gibt eine Möglichkeit, Handler für Benachrichtigungen über das Setzen der Verbindung in den gesperrten Modus hinzuzufügen.
Es scheint jedoch, dass diese Benachrichtigung nur gesendet wird, wenn ich versuche, die Verbindung zu schließen.
So
$this->channel->basic_publish($msg, $this->exchangeName, $route);
läuft erfolgreich ausführt, Handler erhält keine Benachrichtigung über blockierte Verbindung.
Zur gleichen Zeit wird keine Nachricht zur Warteschlange hinzugefügt - ich kann es aus dem Dashboard sagen.
Aber wenn ich versuche Verbindung zu schließen ausdrücklich:
$this->channel->close();
oder implizit (durch nur lassen Skript zu beenden, AMQP Objekt destructor erledigt den Rest) I erhalten eine Benachrichtigung, dass der Kanal gesperrt ist und danach Skript nur friert Soweit ich es verstehe, wartet es auf einige Daten, um die Methode close_ok zu beenden.
Also die Frage ist, wie man Informationen über blockierte Kanal zum Zeitpunkt (oder kurz nach) der Veröffentlichung erhalten? Und wie lässt sich vermeiden, dass das Skript für blockierte Verbindungen auf ewig wartet?
Vielen Dank im Voraus.