依赖引入
<!--引入grpc-->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.6.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.15.1</version>
</dependency>
引入插件
在pom.xml中的plugins中加入maven自动生成grpc的java代码插件
<!-- compile proto file into java files. -->
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.6.0.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<includeMavenTypes>direct</includeMavenTypes>
<inputDirectories>
<include>src/main/resources/protos/</include>
</inputDirectories>
<outputTargets>
<outputTarget>
<type>java</type>
<outputDirectory>src/main/java</outputDirectory>
</outputTarget>
<outputTarget>
<type>grpc-java</type>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.15.0</pluginArtifact>
<outputDirectory>src/main/java</outputDirectory>
</outputTarget>
</outputTargets>
</configuration>
</execution>
</executions>
</plugin>
定义protobuf文件
文件名:VideoRdd.proto,文件内容如下
syntax = "proto3";
package com.genersoft.iot.vmp.grpc;
message StartRDDRequest{
int32 video_id=1; //视频流id
string rtmp_dir=2; //视频流地址
}
message StartRDDResponse{
int32 open_info=1; // 返回打开操作成功信息(1成功,0失败)
}
message StopRDDRequest{
int32 video_id=1; //视频流id
}
message StopRDDResponse{
int32 close_info=1; // 返回关闭操作成功信息(1成功,0失败)
}
service VideoRDD{ //开始视频道路缺陷检测
rpc start_rdd(StartRDDRequest) returns(StartRDDResponse){}
rpc stop_rdd(StopRDDRequest) returns(StopRDDResponse){}
}
生成java代码
使用maven的打包工具,maven package后会在指定的目录下生成VideoRdd.java
、VideoRDDGrpc.java
两个文件
自定义业务逻辑
继承生成的VideoRDDImplBase类,并覆写相关的方法代码