跟孙哥学java
gRPC和SpringBoot整合的思想
实现服务端接口 ,自己写
创建服务端发布gRPC功能 Spring-boot帮我们封装
封装端口----yml
,发布服务--->@GrpcService
搭建开发环境
- 搭建Spring-boot-环境
- 引入依赖
<dependency>
<groupId>com.suns</groupId>
<artifactId>rpc-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>
- 开发服务
// 重复 多次
@GrpcService
public class HelloServiceImpl extends HelloServiceGrpc.HelloServiceImplBase {
@Override
public void hello(HelloProto.HelloRequest request, StreamObserver<HelloProto.HelloResponse> responseObserver) {
String name = request.getName();
System.out.println("name is " + name);
responseObserver.onNext(HelloProto.HelloResponse.newBuilder().setResult("this is result").build());
responseObserver.onCompleted();
}
}
// application.yml
# 核心配置的 就是gRPC服务的端口号
spring:
application:
name: boot-server
main:
web-application-type: none
grpc:
server:
port: 9000
- 客户端
<dependency>
<groupId>net.devh</groupId>
<artifactId>grpc-client-spring-boot-starter</artifactId>
<version>2.14.0.RELEASE</version>
</dependency>
spring:
application:
name: boot-client
grpc:
client:
grpc-server:
address: 'static://127.0.0.1:9000'
negotiation-type: plaintext
@RestController
public class TestController {
@GrpcClient("grpc-server")
private HelloServerGrpc.HelloServerBlockingStub helloServerBlockingStub;
@RequestMapping("/test1")
public String test1(String name){
System.out.println("name="+name);
HelloProto.HelloResponse helloResponse = helloServerBlockingStub.hello(HelloProto.HelloRequest.newBuilder().setName(name).build());
return helloResponse.getResult();
}
}