在php-amqplib这个组件里默认是不开启keepalive和heartbeat的,需要在创建连接时手动给定,但是这两个参数最好还是每次建立连接时都打开,以免当客户端连接断开后对应的连接和信道一直占用浪费资源(之后还是会建立新建连接和信道,并不会复用)
?因为我是以这种方式引用的,所以我找到对应的文件去修改
找到如下文件,修改两个属性的初始值
$keepalive = true, ?//启用keepalive $heartbeat = 1 ?//启用心跳检测 /秒
\vendor\php-amqplib\php-amqplib\PhpAmqpLib\Connection\AMQPStreamConnection.php
?心跳检测建议15秒,或者根据环境的稳定性来选择,以免因为通讯不稳定造成队列自动自动关闭,我这里是测试环境,所以设置的1秒
public function __construct(
$host,
$port,
$user,
$password,
$vhost = '/',
$insist = false,
$login_method = 'AMQPLAIN',
$login_response = null,
$locale = 'en_US',
$connection_timeout = 3.0,
$read_write_timeout = 3.0,
$context = null,
$keepalive = true, //启用keepalive
$heartbeat = 1 //启用心跳检测
) {
$io = new StreamIO(
$host,
$port,
$connection_timeout,
$read_write_timeout,
$context,
$keepalive,
$heartbeat
);
|