egg-uki-grpc

1.0.7 • Public • Published

egg-uki-grpc

NPM version build status Test coverage David deps Known Vulnerabilities npm download

依赖说明

依赖的 egg 版本

egg-uki-grpc 版本 egg 1.x
1.x 😁
0.x

依赖的插件

grpc jeager

开启插件

// config/plugin.js
exports.ukiGrpc = {
  enable: true,
  package: 'egg-uki-grpc',
};

使用场景

    syntax = "proto3";
    package proto;
    //下方的引入需要删除
    // import "google/api/annotations.proto";
    message Ping {
        string value = 1;
        string age = 2;
    }
 
    message Post {
        string name = 1;
        string age = 2;
    }
    service Demo {
        rpc GetPing (Ping) returns (Ping) {
          //下方的方法需要删除
          // option (google.api.http) = {
          //   get: "/qa/get"
          // };
        }
    }

特别注意:

  • 因为grpc在go使用的一些特殊需要,会有一些我们不需要且无法兼容的内容, 这些内容需要我们在复制时删除,如上图proto中的两个注释

proto文件如上,通过下方代码可以使用如下方式调用grpc。 调用方法封装为promise

  const result= await ctx.grpcInvoker('demo', 'Demo', 'getPing', { data: { value: '3333' } })
  • demo : server名
  • Demo : service名
  • getPing : rpc方法名 无论原文件是否大小写 第一个字母一律小写
  • data : 数据内容
  • opts : 默认不需要,当有对某个接口有特殊的超时需求时可以设置 opts= {timeout:10000} 即设置这次请求超时时间为10s

详细配置

请到 config/config.default.js 查看详细配置项说明。

 
exports.ukiGrpc = {
    clients: {
        //server名
        demo: { 
            file: 'app/proto/demo.proto', //具体的文件地址
            //TODO:可能需要一些配置
            clientOptions: {
 
            },
            endpoint: 'localhost:50051', //grpc服务的连接地址
            timeout: 5000, //超时时间
        },
    },
};
//链路追踪的配置
exports.jaeger = {
    serviceName: 'service', //当前服务的名字
    sampler: {
        type: 'const', 
        param: 1,
    },
    reporter: {
        collectorEndpoint: 'http://127.0.0.1:14268/api/traces', //链路地址  线上使用下方地址
    },
}

单元测试

提问交流

License

MIT

Package Sidebar

Install

npm i egg-uki-grpc

Weekly Downloads

0

Version

1.0.7

License

MIT

Unpacked Size

17.4 kB

Total Files

10

Last publish

Collaborators

  • coderxy