简介
gRPC Spring Boot Starter 项目是一个 gRPC 的 Spring Boot 模块。通过在 Spring Boot 中内嵌一个 gRPC Server 对外提供服务,并支持 Spring Cloud 的服务发现、注册、链路跟踪等等。
更新内容
在 2.2.0.RELEASE 版本中包含了以下重大更新
- 支持 Java 11
- 支持使用 Spring Security 进行认证授权
- 支持自定义的编解码
- 支持自动收集并上报 metric 信息
- /info 展示当前绑定的端口和对应的 gRPC service
- 支持 shaded net
- 支持更多的 NameResolver
gRPC使用
特点
-
使用@ GrpcService自动创建并运行一个 gRPC 服务,内嵌在 spring-boot 应用中
-
使用@ GrpcClient自动创建和管理你的channel和stub
-
支持 Spring Cloud(向Consul或Eureka注册服务并获取gRPC服务器信息)
-
支持 Spring Sleuth 进行链路跟踪
-
支持对于 server、client 分别设置全局拦截器或单个的拦截器
-
支持 Spring-Security
-
支持 metric (micrometer / actuator)
-
可以使用 grpc-netty-shaded
#####版本
2.x.x.RELEASE 支持 Spring Boot 2 & Spring Cloud Finchley。
最新的版本:2.2.0.RELEASE
1.x.x.RELEASE 支持 Spring Boot 1 & Spring Cloud Edgware 、Dalston、Camden。
最新的版本:1.4.1.RELEASE
注意: 此项目也可以在没有Spring-Boot的情况下使用,但这需要一些手动bean配置。
使用方式
gRPC server + client
如果使用的是 Maven,添加如下依赖
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-spring-boot-starter</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
如果使用的 Gradle,添加如下依赖
dependencies {
compile 'net.devh:grpc-spring-boot-starter:2.2.0.RELEASE'
}
gRPC 服务端
如果使用的是 Maven,添加如下依赖
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
如果使用的 Gradle,添加如下依赖
dependencies {
compile 'net.devh:grpc-server-spring-boot-starter:2.2.0.RELEASE'
}
实现 gRPC server 的业务逻辑,并使用 @GrpcService 注解
@GrpcService
public class GrpcServerService extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(HelloRequest req, StreamObserver<HelloReply>