带你轻松使用Hyperf玩转Grpc(四)启动服务(服务反射)

四、启动服务(服务反射)

在上一篇中,我们实现了通过编写proto文件生成代码,并完成服务编写。这个篇章将带大家把服务跑起来,并在postman中完成测试。

1、配置服务

修改 mall-service/config/autoload/server.php 配置文件

...
'servers' => [
    [
        'name' => 'grpc',
        'type' => Server::SERVER_HTTP,
        'host' => '0.0.0.0',
        'port' => 9502,
        'sock_type' => SWOOLE_SOCK_TCP,
        'callbacks' => [
            Event::ON_REQUEST => [Hyperf\GrpcServer\Server::class, 'onRequest'],
        ],
    ]
],
....

2、配置路由

修改 mall-service/config/routes.php 配置文件 加入以下内容

\Crayoon\HyperfGrpc\GrpcHelper::RegisterRoutes(function () {
    // 注意服务名称、方法名称需要与proto声明的服务一致
    Router::addGroup("/mall.ProductSrv", function () {
        Router::post("create", [\App\Controller\ProductSrvController::class, 'create']);
        Router::post("getList", [\App\Controller\ProductSrvController::class, 'getList']);
        Router::post("getStock", [\App\Controller\ProductSrvController::class, 'getStock']);
        Router::post("incStock", [\App\Controller\ProductSrvController::class, 'incStock']);
        Router::post("decStock", [\App\Controller\ProductSrvController::class, 'decStock']);
    });
});

3、启动

mall-service 项目根目录下执行 php bin/hyperf.php start

看到 [INFO] HTTP Server listening at 0.0.0.0:9502 即启动成功

4、测试(服务反射)

这里使用的是 postman,打开 postman 并创建grpc连接

地址栏中输入我们的服务地址 grpc://127.0.0.1:9502

这个时候点击 使用服务反射 是报错的,默认框架是没提供服务反射功能的哈。这边我们得自行实现,crayoon/hyperf-grpc 插件实现了服务反射,我们先生成配置文件。

在 mall-service 目录下 执行 CTRL+C 停止运行,再执行

php bin/hyperf.php vendor:publish crayoon/hyperf-grpc

我们将在 config/autoload中 看到新增的配置文件。

再次执行 启动命令,再回到 postman 重新点击 Use server reflection 使用反射即可看到服务

在测试环境中 要使用服务反射,需要先确保 config/autoload/grpc.php 中 reflection.enable 是为 true。在生产环境中 可以通过修改环境变量 REFLECTION_ENABLE=false 关闭服务反射。

最后我们试一下,完成的服务是否可用吧。

点击 Generate Example Message 即可创建请求结构体,修改一下,再点击 Invoke 即可发起请求。

本作品采用《CC 协议》,转载必须注明作者和本文链接
from crayxn github.com/crayxn
本帖由 MArtian 于 3周前 加精
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!