ディスク レベルまたはメモリ ウォーターマーク アラートが原因で、RabbitMQ が接続をブロックし始めた状況を処理するために、意味のあるコードを作成しようとしています。
接続をブロック モードに設定することに関する通知のハンドラーを追加する可能性があります。
ただし、この通知は、接続を閉じようとしたときにのみ送信されるようです。
とても走っている
$this->channel->basic_publish($msg, $this->exchangeName, $route);
正常に実行されますが、ハンドラーはブロックされた接続に関する通知を受け取りません。
同時に、メッセージはキューに追加されません - ダッシュボードからわかります。
しかし、明示的に接続を閉じようとすると:
$this->channel->close();
または暗黙的に(スクリプトを終了させるだけで、AMQPオブジェクトデストラクタが残りを行います)チャネルがブロックされたという通知を受け取り、その後、スクリプトはフリーズします。
問題は、公開時 (または公開直後) にブロックされたチャンネルに関する情報を取得する方法です。また、ブロックされた接続でスクリプトが永遠に待機するのを回避するにはどうすればよいですか?
前もって感謝します。