grpc_service - GStones/moke-kit GitHub Wiki

本文档介绍了如何实现Grpc服务,以及如何使用这些服务。

先决条件

需要快速创建自己的moke-kit项目

1. 实现对应Grpc的接口类Service.

service.go 中实现对应的接口,moke-kit会自动把相关接口注册到Grpc服务中。

  func (s *Service) RegisterWithGrpcServer(server siface.IGrpcServer) error {   
          pb.RegisterDemoServiceServer(server.GrpcServer(), s)   
          return nil
  }

2. 封装Grpc服务为 GrpcService.

把Grpc服务封装为一个ParamsObject 类型的对象 GrpcService

  var GrpcService = fx.Provide(
      func(
        // dependent other ParamsObjects
          ...,
      ) (out sfx.GrpcServiceResult, err error) {
          return NewGrpcService(service), nil
      },
  )

3. 模块化Grpc服务 GrpcModule.

组合GrpcService 和它内部依赖的ParamsObject 为一个GrpcModule

    var GrpcModule = fx.Module("grpcService",
		// other modules
		    ...,
            demo.GrpcService,
    )

4. 使用GrpcModule.

实现一个Main函数,并注入GrpcModule ,然后运行,服务监听本机:8081端口。

  fxmain.Main(
      module.GrpcModule,
  )

5. 访问 GrpcService

moke-kit自带交互式命令行测试工具,你可以通过编译./cmd/demo/client/main.go 来生成一个交互式客户端。

     go build -o client.exe ./cmd/demo/client/main.go 
     # 运行客户端,连接`localhost:8081`服务
     ./client.exe grpc --host localhost:8081
     # help 查看命令帮助

如何生成Proto文件?

  • Install buf
  • 把相关proto文件放到 ./api 目录下面
  • buf generate 会在./api/gen/ 目录下生成对应的go文件,如果有配置http tags, 会在 ./third_party 目录下生成对应的swagger.json文件。
  • 你可以通过配置 buf 的相关配置文件去控制如何生成proto文件。详细文档
⚠️ **GitHub.com Fallback** ⚠️