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