public static function onWorkerStart($businessWorker)
{
// Channel客户端连接到Channel服务端
Channel\Client::connect('172.14.0.111', 8989);
// // 订阅broadcast事件,并注册事件回调
Channel\Client::on('sendMessage', function($event_data){
//推送好友消息
print_r($event_data);
$sendData['type'] = 'sendMessage';
$sendData['data'] = $event_data['sendData'];
Gateway::sendToGroup('group_'.$event_data['rece_uid'], json_encode($sendData));
});
}
在 Event.php 的 onWorkerStart 中订阅了管道事件,我收到了管道通知后就需要执行我的业务逻辑。
由于我设置的进程是四个(默认),所以执行了四次,但是我只需要执行一次即可。
四个进程id($businessWorker->id),分别是0、1、2、3,我想随机获取一个进程id让其执行,不随机的话如果只使用一个进程应该是会出现阻塞的。
我的这个想法是否可行?是否还有更好的方案?
业务是 sendToGroup 的话不会阻塞
不是在onMessage里面处理业务逻辑吗