封装grpc

Posted 还是那个徐东强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装grpc相关的知识,希望对你有一定的参考价值。

grpc的一个简单封装demo,使业务开发者不需要关心底层的grpc实现,就可以使用grpc。

rpc-demo-api: 定义proto文件

服务提供方只需要依赖rpc-remoting-netty-server,同时service实现rpc-demo-api中的接口。

服务消费方只需要依赖rpc-remoting-netty-client,通过自定义注解@Reference就像装配一个本地的service,直接执行方法,返回结果。


目录结构如下:


定义proto文件,包括service定义,请求参数和响应数据

封装grpc

以user为例,代码27行会生成 java类UserGrpc的service定义。

UserRequest和UserReply均会生成对应的java类。

因为pom中引入了protoc-gen-grpc-java的插件,编译后会自动生成对应的java类。


服务提供方

封装grpc

pom中依赖rpc-demo-api和rpc-remoting-netty-server。

service实现了UserGrpc.UserImplBase,这是根据user的proto文件生成的java类中的一个抽象类。

通过自定义的注解@RemoteService将服务注册到服务端。


服务消费方

封装grpc

pom中引入了rpc-demo-api和rpc-remoting-netty-client。

通过自定义的@Reference像注解@Autowired自动装配service,像执行本地方法一样。


测试效果如下:

1.启动服务端,执行Provider中的main方法


2.服务消费端,直接执行@Test的用例

执行ConsumerTest中的test2的用例



代码发在码云上

https://gitee.com/XuDongQiang/grpc.git


以上

以上是关于封装grpc的主要内容,如果未能解决你的问题,请参考以下文章

问答机器人代码的封装和提供接口

Abp + Grpc 如何实现用户会话状态传递

Go语言实战 (16) gRPC 集成 ETCD 进行服务注册

grpc

go语言使用grpc的步骤

ASP.NET Core gRPC 打通前端世界的尝试