GatewayWorker中onWorkerStart中的业务逻辑执行问题

joytom

目前出现的问题:

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.phponWorkerStart 中订阅了管道事件,我收到了管道通知后就需要执行我的业务逻辑。

由于我设置的进程是四个(默认),所以执行了四次,但是我只需要执行一次即可。

我的想法

四个进程id($businessWorker->id),分别是0、1、2、3,我想随机获取一个进程id让其执行,不随机的话如果只使用一个进程应该是会出现阻塞的。

想要得到的答案

我的这个想法是否可行?是否还有更好的方案?

989 2 0
2个回答

朕震惊了

业务是 sendToGroup 的话不会阻塞

  • 暂无评论
不败少龙

不是在onMessage里面处理业务逻辑吗

  • 暂无评论
年代过于久远,无法发表回答
🔝