我在使用该项目过程中,曾出现过timer无限制递增的情况,也出现过服务端主动踢出连接无法消费等问题,遂自己重写了一个amqp客户端;
后来我回过头观察分析workerman/rabbitmq源码的时候,发现了一些可以被建议的地方:
1.nextHeartbeat - $now, [$this, "onHeartbeat"], null, false);
}
}
~~~
**这里我理解是为了判断时间差,更精确的进行触发回调的客户端使用的是异步promise的执行方式,在遇到错误的时候会调用then中的onRejected,我认为,在一定情况下如果心跳失败了,会影响当前链接的活性,随之会被服务端踢出,但客户端并没有完善的重连机制,就造成了假死,所以我在这个位置加入杀死当前进程的方法,让workerman的主进程重新拉起一个进程,该进程也会重新连接,重新处理和消费,不会影响工作流,kill方法的代码如下:**
~~~
public