很简单的一个 HelloService 服务 。
3.2 grpc-servergrpc-server 则是我们的服务端,这是一个 Spring Boot 工程,项目依赖如下:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.javaboy</groupId><artifactId>grpc-server</artifactId><version>0.0.1-SNAPSHOT</version><name>grpc-server</name><description>grpc-server</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.javaboy</groupId><artifactId>grpc-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>.NET.devh</groupId><artifactId>grpc-server-spring-boot-starter</artifactId><version>2.14.0.RELEASE</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.0.5.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
由于第三方库 grpc-server-spring-boot-starter 在支持 Spring Boot3 上还有一些瑕疵,因此我这里使用了 Spring Boot2.7.7 这个版本 。
这里需要注意的是就是添加了 gRPC 的依赖 grpc-server-spring-boot-starter 和 nacos 的依赖 。其他都是常规配置 。
接下来我们来在服务端提供 gRPC 方法的实现:
@GrpcServicepublic class HelloServiceImpl extends HelloServiceGrpc.HelloServiceImplBase {@Overridepublic void sayHello(StringValue request, StreamObserver<StringValue> responseobserver) {String value = https://www.isolves.com/it/cxkf/kj/2023-04-04/request.getValue();responseObserver.onNext(StringValue.newBuilder().setValue("hello " + value).build());responseObserver.onCompleted();}}
小伙伴们看到,通过 @GrpcService 注解去标记我们的一个服务即可 。
最后,在 application.yaml 中进行配置,将当前服务注册到 nacos 容器中:
grpc:server:port: 9099spring:cloud:nacos:discovery:server-addr: hc.javaboy.org:8848username: nacospassword: nacosenabled: trueapplication:name: grpc_server
OK,服务端搞定 。
3.3 grpc-client最后再来看看客户端 。
先来看依赖:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.javaboy</groupId><artifactId>grpc-client</artifactId><version>0.0.1-SNAPSHOT</version><name>grpc-client</name><description>grpc-client</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.javaboy</groupId><artifactId>grpc-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>net.devh</groupId><artifactId>grpc-client-spring-boot-starter</artifactId><version>2.14.0.RELEASE</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.0.5.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
推荐阅读
- 一个鸡蛋清的热量
- 一个水煮鸡蛋白的热量
- 景甜|怕景甜成为下一个阿娇或张柏芝?想啥呢!
- 李晨|李晨猎艳记:六任女友一个比一个漂亮,却没有一个走到最后
- |文玩人要有底线,要做到文玩“7不入”,做一个有底线的文玩人!
- 胡歌|大瓜!上海一刚结婚40岁中年男演员跟女老板有一个孩子,已上小学
- |张继科涉赌、范志毅被查、导演群殴,一个比一个生猛
- 李晨|李晨女友记:6任女友一个比一个漂亮,却没有一个走到最后
- 陈慧琳|杨幂晒午餐,一个人吃6道菜,吃一大碗白米饭体重依然保持90斤
- 主持人|亲手自毁前程的6位主持人,个个“自我作死”,没一个值得同情