- 首先要做的就是定义gRPC接口,打开mall.proto,在里面新增方法和相关的数据结构,需要重点关注的是BatchDeduct方法的入参ProductOrder和返回值DeductReply都添加了stream修饰(ProductOrder是上一章定义的),代表该方法是双向流类型:
// gRPC服务,这是个在线商城的库存服务
service StockService {
// 双向流式:批量扣减库存
rpc BatchDeduct (stream ProductOrder) returns (stream DeductReply) {}
}
// 扣减库存返回结果的数据结构
message DeductReply {
// 返回码
int32 code = 1;
// 描述信息
string message = 2;
}
- 双击下图红框中的task即可生成java代码:
- 生成下图红框中的文件,即服务端定义和返回值数据结构:
- 接下来开发服务端;
开发服务端应用
- 在父工程grpc-turtorials下面新建名为double-stream-server-side的模块,其build.gradle内容如下:
// 使用springboot插件
plugins {
id ‘org.springframework.boot’
}
dependencies {
implementation ‘org.projectlombok:lombok’
implementation ‘org.springframework.boot:spring-boot-starter’
// 作为gRPC服务提供方,需要用到此库
implementation ‘net.devh:grpc-server-spring-boot-starter’
// 依赖自动生成源码的工程
implementation project(‘:grpc-lib’)
// annotationProcessor不会传递,使用了lombok生成代码的模块,需要自己声明annotationProcessor
annotationProcessor ‘org.projectlombok:lombok’
}
- 配置文件application.yml