使用 Spring Boot 的应用进行自动配置,内嵌 gRPC server
支持 Spring Cloud(可以通过 Spring Cloud 进行服务注册并且获取 gRPC server 的信息)
支持 Spring Sleuth 进行应用跟踪
支持对于 server、client 分别设置全局拦截器或单个的拦截器
支持 keepalive
添加依赖如果使用的是Maven
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-server-spring-boot-starter</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
添加依赖如果使用的是Gradle
dependencies {
compile 'net.devh:grpc-server-spring-boot-starter:1.4.0.RELEASE'
}
实现 Grpc 生成的接口,并使用 @GrpcService
注解
@GrpcService(GreeterGrpc.class)
public class GrpcServerService extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder().setMessage("Hello =============> " + req.getName()).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}
设置 gRPC 的 host 跟 port 在application.properties,默认的监听的 host 是 0.0.0.0,默认的 port 是 9090
grpc.server.port=9090
grpc.server.address=0.0.0.0
添加依赖如果使用的是Maven
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
添加依赖如果使用的是Gradle
dependencies {
compile 'net.devh:grpc-client-spring-boot-starter:1.4.0.RELEASE'
}
使用 @GrpcClient
注解去设置 Channel 或者 也可以通过 GrpcChannelFactory
中的 createChannel
得到 Channel
@GrpcClient("gRPC server name")
private Channel serverChannel;
gRPC request
GreeterGrpc.GreeterBlockingStub stub = GreeterGrpc.newBlockingStub(serverChannel);
HelloReply response = stub.sayHello(HelloRequest.newBuilder().setName(name).build());
设置 gRPC 服务器的 host 跟 port 在application.properties,默认的host是[127.0.0.1],默认的port是[9090]
grpc.client.(gRPC server name).host[0]=
grpc.client.(gRPC server name).port[0]=
说明: 表格中展示的版本仅仅代表该搭配能一起正常工作,不代表其他版本不能正常
Project Version | gRPC-java Version |
---|---|
1.4.0.RELEASE | 1.10.0 |
1.3.0.RELEASE | 1.6.1 |
1.2.0.RELEASE | 1.3.0 |
1.1.1.RELEASE | 1.2.0 |
1.0.1.RELEASE | 1.1.2 |
1.0.0.RELEASE | 1.0.3 |
https://github.com/yidongnan/grpc-spring-boot-starter/tree/master/examples