上文《Grpc框架实战微服务调用系列(六)实现grpc的服务端》我们已经完成了grpc的服务端编码演示,本文的话我们来演示下grpc客户端的编码演示。
使用grpc的客户端的话,主要还是分情况:
1、当前项目属于底层(领域层或者中台)不直接对外提供服务。 2、当前项目属于应用层,会直接对外提供服务。
以上两种情况其实都是大同小异,唯一的区别是是否需要暴露http端口。本文我们主要演示的第二种情况。第二种情况我们假设的场景是:
当前项目属于应用层,需要与前端js进行对接,或者暴露http端口。
这种方式的话,我们还是使用springboot作为基础开发框架,需要引入spring-boot-starter-web依赖包。下面我们直接开始演示。
一、创建grpc-client项目
这里我们还是在grpcdemo这个主模块下面创建module,名称为grpc-client。示例图如下:
二、引入pom依赖
这里我们已经创建好了grpc-client项目,那么接下来我们就要引入client相关的依赖,client项目的整个调用流程如下:
所以我们需要引入web依赖和grpcclient依赖,这里的pom示例如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- grpc client和spring-boot集成框架 --> <dependency> <groupId>net.devh</groupId> <artifactId>grpc-client-spring-boot-starter</artifactId> <version>2.10.1.RELEASE</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.rpc.api</groupId> <artifactId>grpc-api</artifactId> <version>1.0</version> </dependency> </dependencies>
三、创建webcontroller
这里我们和普通项目使用是一样的,即定义一个restcontroller接口,代码如下:
@GrpcClient("grpc-server") private UserServiceStub userServiceStub; @RequestMapping("/getUser") public String getUser(@RequestParam("uid") int uid) { UserRequest request = UserRequest.newBuilder().setUid(uid).build(); userServiceStub.list(request, new StreamObserver<UserResponse>() { @Override public void onNext(UserResponse result) { log.info("返回的结果是:{}",JSON.toJSONString(result)); } @Override public void onError(Throwable throwable) { } @Override public void onCompleted() { } }); return "请求成功"; }
四、配置application.yml文件
接着我们再来配置下client端的信息,主要也还是在application.yml文件中进行配置,示例如下:
grpc: client: grpc-server: negotiationType: PLAINTEXT address: static://192.168.31.115:3001 server: port: 8088 spring: application: name: grcp-client
示例图如下:
接着我们运行下server和client,然后访问下client这个接口
可以看到调用接口成功,我们再来看打印的日志:
可以可能到客户端已经调用成功了服务端。没有问题。
最后按照惯例,附上本案例的源码,登陆后即可下载。
还没有评论,来说两句吧...