美文网首页
Springboot 使用 grpc的方式添加protobuf

Springboot 使用 grpc的方式添加protobuf

作者: Silence潇湘夜雨 | 来源:发表于2020-09-02 18:12 被阅读0次

前提

最近在手撸IM相关的APP,想着后台传输数据用protobuf来会方便一些,奈何自己刚开始接触SpringBoot时间不长,有些东西不是很清楚,使用期间遇到了一些问题。但是,最终还是解决了,今天写这篇文章主要是记录以下Springboot中通过grpc的方式使用protobuf

注意:关于 protobuf的相关解释不说了,如果不清楚可以移步Android Protobuf 使用初探,查看相关内容

首先

关于Springboot中如何使用protobuf,请看下面的配置,网上其他文章说可以添加protobuf的插件,各位可以根据自己的具体情况添加。

  • 1、打开pom.xml文件,在properties节点下添加protobufgrpc的版本

    <properties>
      <grpc.version>1.6.1</grpc.version>
      <protobuf.version>3.3.0</protobuf.version>
      <java.version>1.8</java.version>
    </properties>
    
  • 2、在dependencies节点下添加protobufgrpc的maven依赖

    <dependency>
          <groupId>com.google.protobuf</groupId>
          <artifactId>protobuf-java</artifactId>
          <version>${protobuf.version}</version>
      </dependency>
      <dependency>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-netty</artifactId>
          <version>${grpc.version}</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-protobuf</artifactId>
          <version>${grpc.version}</version>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>io.grpc</groupId>
          <artifactId>grpc-stub</artifactId>
          <version>${grpc.version}</version>
          <scope>provided</scope>
      </dependency>
    
  • 3、在build节点下添加maven

    <extensions>
          <extension>
              <groupId>kr.motd.maven</groupId>
              <artifactId>os-maven-plugin</artifactId>
              <version>1.5.0.Final</version>
          </extension>
      </extensions>
      <plugins>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
    
          <plugin>
              <groupId>org.xolstice.maven.plugins</groupId>
              <artifactId>protobuf-maven-plugin</artifactId>
              <version>0.5.0</version>
              <configuration>
                  <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
                  <pluginId>grpc-java</pluginId>
                  <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
              </configuration>
              <executions>
                  <execution>
                      <goals>
                          <goal>compile</goal>
                          <goal>test-compile</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
    

其次

这一步是创建protobuf文件并且生成对应的java文件

  • 1、在src/main下面创建proto包,并且在里面创建Msg.proto文件,如下图所示
image.png
  • 2、写入protobuf内容

    syntax = "proto3";
    option java_outer_classname = "MessageProtoBuf";// 指定生成的类名
    
    
    message Msg {
    Head head = 1;// 消息头
    string body = 2;// 消息体
    }
    
    message Head {
    string msgId = 1;// 消息id
    int32 msgType = 2;// 消息类型
    int32 msgContentType = 3;// 消息内容类型
    string fromId = 4;// 消息发送者id
    string toId = 5;// 消息接收者id
    int64 timestamp = 6;// 消息时间戳
    int32 statusReport = 7;// 状态报告
    string extend = 8;// 扩展字段,以key/value形式存放的json
    }
    
  • 3、开始编译,生成对应的java文件,如下图所以,依次点击,就会在target文件夹下生成对应的java类

    image.png
  • 4、如下图所示,target文件夹下就会生成对应的java文件

    image.png
    注意:我这里指定的protobuf的文件名为MessageProtoBuf,当然你也可以自定义。

最后

好了,这就是今天的Springboot使用 grpc的方式添加protobuf的文章,如果有疑问可以进水群(493180098)探讨。

相关文章

网友评论

      本文标题:Springboot 使用 grpc的方式添加protobuf

      本文链接:https://www.haomeiwen.com/subject/azvwsktx.html