请教GateWay多实例通讯

defeatlr

项目采用GateWayWorker框架,如果需要2个异步任务去执行耗时操作的话,是不是要建3个实例,A实例接数据,B C实例跑任务,那A实例是通过AsyncTcpConnection去链接B C实例吗,B C实例中的任务结果该如何返回?
看了手册中的例子假如B 实例

$task_worker->onMessage = function($connection, $task_data)
{
     // 假设发来的是json数据
     $task_data = json_decode($task_data, true);
     // 根据task_data处理相应的任务逻辑.... 得到结果,这里省略....
     $task_result = ......
     // 发送结果
     $connection->send(json_encode($task_result));
};

A实例中onMessage回调中要如何接收task_result

$task_connection->onMessage = function($task_connection, $task_result)
{
     // 结果
     var_dump($task_result);
     // 获得结果后记得关闭链接
     $task_connection->close();
};

这样不行的,接收不到结果,还是原本就不是这样用的

2408 1 0
1个回答

walkor 打赏

假设你们的GatewayWorker项目是A,那么建立一个workerman实例B即可,B可以处理多种业务的。

流程就是利用AysncTcpConnection发起一步连接,发送任务,异步等待结果。参考手册就行。

  • defeatlr 2017-11-19

    感谢解答!!!您的意思就是单独运行一个workerman实例 然后GW通过AysncTcpConnection来和这个workerman实例来通讯,然后在workerman里面来处理不同的任务是吗

  • walkor 2017-11-19

  • defeatlr 2017-11-21

    @1:谢谢老大

年代过于久远,无法发表回答
×
🔝