我正在尝试构建有意义的代码来处理 RabbitMQ 由于磁盘级别或内存水印警报而开始阻止连接的情况。
可以为有关将连接设置为阻塞模式的通知添加处理程序。
但是,似乎只有当我尝试关闭连接时才会发送此通知。
所以跑步
$this->channel->basic_publish($msg, $this->exchangeName, $route);
成功执行,处理程序没有收到有关阻塞连接的通知。
同时,消息没有添加到队列中-我可以从仪表板中看出它。
但是当我尝试明确关闭连接时:
$this->channel->close();
或隐式(通过让脚本完成,AMQP 对象析构函数完成其余工作)我收到通道被阻塞的通知,并且在该脚本冻结之后,据我所知,它等待一些数据完成 close_ok 方法。
所以问题是如何在发布时(或之后)获取有关被阻止频道的信息?以及如何避免脚本在阻塞连接上永远等待?
提前致谢。