maven grpc整合springboot demo
1. 说明
GRPC基于protobuf来定义接口。分为server端和client端。其中server端提供接口实现,client通过调用server端接口从而获取期望数据。
2. 公共部分
2.1 添加依赖
<dependency> <groupId>net.devh</groupId> <artifactId>grpc-spring-boot-starter</artifactId> <version>2.12.0.RELEASE</version> </dependency> <dependency> <!-- Java 9+ compatibility --> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> </dependency>
添加插件(注意:如果wagon-provider-api无法自动引入,可以现在依赖中引入,以便于依赖的下载,然后在删除依赖坐标即可)
<plugin> <!-- protobuf生成插件--> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <protocArtifact>com.google.protobuf:protoc:3.17.3:exe:${os.detected.classifier} </protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.39.0:exe:${os.detected.classifier} </pluginArtifact> <!--默认值--> <protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot> <outputDirectory>${project.basedir}/src/main/java</outputDirectory> <clearOutputDirectory>false</clearOutputDirectory> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin>
2.2 添加proto依赖文件
添加目录src/main/proto
,并将目录设置为Source Root
,然后在目录src/main/proto
下添加文件hello.proto
,内容如下
syntax = "proto3"; //指定proto版本 package com.server; // 生成的Java代码的包名 option java_package = "com.grpc.server"; // 请求参数 message HelloReq{ string name = 1; } // 返回参数 message HelloResp{ string ret = 1; } // rpc service service HelloService{ // service中需要进行调用的具体方法 rpc hello(HelloReq) returns (HelloResp){} }
2.3 通过protobuf生成Java代码
插件导入成功后,点击下图选中的protobuf:compile
和protbuf:compile-custom
依次生成对应的Java代码(也就是接口依赖代码)
3. server端接口具体实现
service代码如下
import io.grpc.stub.StreamObserver; import net.devh.boot.grpc.server.service.GrpcService; @GrpcService public class HelloService extends HelloServiceGrpc.HelloServiceImplBase { @Override public void hello(Hello.HelloReq request, StreamObserver<Hello.HelloResp> responseObserver) { Hello.HelloResp resp = Hello.HelloResp.newBuilder().setRet("你好-->"+request.getName()).build(); responseObserver.onNext(resp); responseObserver.onCompleted(); } }
4 client端接口具体实现
client端测试调用代码如下
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class GrpcTest { @Autowired private HelloSerivce helloSerivce; @Test public void test1() throws Exception{ helloSerivce.haha("牛哈哈"); } }
以上就是maven grpc整合springboot demo的详细内容,更多关于maven grpc整合springboot 的资料请关注脚本之家其它相关文章!
相关文章
springBoot+mybatis-plus实现监听mysql数据库的数据增删改
mybatis-plus技术是简化了繁琐的代码操作,把增删改查的语句都内置了,直接调用就可以实现数据库的增删改查了,这篇文章主要给大家介绍了关于springBoot+mybatis-plus实现监听mysql数据库数据增删改的相关资料,需要的朋友可以参考下2024-01-01BeanUtils.copyProperties复制对象结果为空的原因分析
这篇文章主要介绍了BeanUtils.copyProperties复制对象结果为空的原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-06-06JUC并发编程LinkedBlockingQueue队列深入分析源码
LinkedBlockingQueue 是一个可选有界阻塞队列,这篇文章主要为大家详细介绍了Java中LinkedBlockingQueue的实现原理与适用场景,感兴趣的可以了解一下2023-04-04SpringCloud客户端报错:- was unable to send&nb
这篇文章主要介绍了SpringCloud客户端报错:- was unable to send heartbeat!的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-05-05
最新评论