webman 自定义进程 rabbbitmq 消费者 while 导致worker[rabbitmqttl:31316] exit with status 9
调试看看while卡了多久,估计是因为你业务代码阻塞太长时间了.
while 死循环会导致workerman无法得到运行控制权,无法响应stop reload restart命令。所以当运行需要停止进程时进程没有响应主进程会杀死没响应的进程,出现exit with status 9错误码。
老大,那这种情况怎么处理?rabbitmq消费者肯定得while呀
开发上线,服务也得重启啥的
onWorkerStart里加一行代码
pcntl_signal(SIGINT, function(){Worker::stopAll();});
while循环改成
while($channel->is_consuming()) { $channel->wait(); pcntl_signal_dispatch(); }
另外看下 $channel->wait()有没有超时参数,有的话设置成1秒。
$channel->wait()
感谢老大,你这技术神牛
用workerman的rabbitmq组件就不需要在onWorkerStart时用while死循环了
你也可以用定时器加拉的形式,就不会和出现你的问题。
调试看看while卡了多久,估计是因为你业务代码阻塞太长时间了.
while 死循环会导致workerman无法得到运行控制权,无法响应stop reload restart命令。所以当运行需要停止进程时进程没有响应主进程会杀死没响应的进程,出现exit with status 9错误码。
老大,那这种情况怎么处理?rabbitmq消费者肯定得while呀
开发上线,服务也得重启啥的
onWorkerStart里加一行代码
while循环改成
另外看下
$channel->wait()
有没有超时参数,有的话设置成1秒。感谢老大,你这技术神牛
用workerman的rabbitmq组件就不需要在onWorkerStart时用while死循环了
你也可以用定时器加拉的形式,就不会和出现你的问题。