先理解一下protocol buffer是什么东西。

protocol buffer是google发明的一种数据序列化方案,和json是同种类型的玩意,它非常适合在rpc场景下使用。同json一样,protocol buffer具有语言无关性,java应用可以通过protocol buffer与go应用、python应用、php等应用互通数据。protocol buffer有时也简称protobuf或者pb。protocol buffer对应的源文件后缀是.proto,也称为proto文件。在idea上开发proto文件,要安装protobuf support插件,不然没有语法提醒。同时需要引入protobuf-java.jar

<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.10.0</version>
</dependency>

同时引入protobuf-maven-plugin插件。插件作用是把proto文件编译成java文件。

<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.6.2</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.10.0:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.25.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

我们用的是v3版本的protocol buffer,如果要用v3版本的语法,则必须在proto文件的第一行显式指定,syntax = "proto3";,否则会用v2语法。

下面以一个简单例子作为切入点介绍v3语法。

假设要定义一个搜索请求。

最新文章

  1. MVVM设计模式和WPF中的实现(四)事件绑定
  2. 【hive】——Hive初始了解
  3. django admin中保存添加的数据提示need string or buffer, int found
  4. CSS--结构和层叠
  5. Codeforces Round #339 Div.2 A - Link/Cut Tree
  6. MongoDB学习笔记-查询
  7. PHP利器-WAMPServer
  8. Linux :: vi E212: Can&#39;t open file for writing
  9. jquery动态加入删除一行数据
  10. python在windows通过安装模块错误
  11. leetcode441(巧妙利用取整和解方程)
  12. sqlserver 脚本方式导出数据到excel
  13. xcode7.3 iTunes Store operation failed解决
  14. 解决 vmware workstations 14 开启虚拟机黑屏
  15. 快速构建H5单页面切换应用
  16. MFC 对话框不显示,返回-1 原因
  17. MySQL MGR+ Consul之数据库高可用方案
  18. 一个js文件导入js的函数
  19. 《Javascript高级程序设计》第六章笔记整理
  20. 关于vue项目去除margin和padding后设置元素width和height为100%后,出现滚动条问题(移动端)

热门文章

  1. jmeter对websocket进行压测
  2. 【转帖】Spring Boot 为什么这么火?
  3. Statistics项目学习笔记
  4. 项目中使用vue的API。 和项目的结构
  5. 即时通讯IM
  6. vim编辑Dockerfile时语法高亮
  7. msql 事务
  8. Python基础数据类型int
  9. .net 分布式锁
  10. Swoole开启守护进程后如何关闭