热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java/gogrpc生成service

proto生成grpc想生成javago的代码的话,就得安装protoc这个程序linux下(arch)安装就是sudopacman-Sprotobuf这样当你想生成对应javag

proto 生成

grpc 想 生成 java / go 的代码 的话 ,就得安装 protoc 这个程序

linux 下(arch) 安装 就是 sudo pacman -S protobuf

这样当你想生成 对应 java / go 代码 的时候 就 只要

比如 protoc -I="./protobuf" --go_out=./ ./protobuf/user.proto

这里 --go_out 就是代表你 生成的产品 所在路径 如果是 java 的话就 是 --java_out 参数

结果 截图 如下



你可能会疑问 --go_out=./ 不是 当前 根目录 么 ,为什么 产物 会在 那么深的路径里面 答案在 proto 文件里面

因为指定了 option go_package = "micro-service/api/protobuf/user/v1"; package 包名,所以他就会以 根目录为基础 ,按照 包名层次 创建 了 (下面创建java的时候也同理)

但是 这种创建方法 是 官方 的 ,他 只是 根据 Proto 里面 定义 的实体 创建 了 不同语言的 实体而已 ,service 他 是 没有创建 的 ,

要想 创建 service , 就必须 安装 插件


go grpc service 生成

生成 go grpc service 的插件 叫 protoc-gen-grpc-java protoc-gen-grpc-java

先下载

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1

下载完成后 cd ~/go/bin

可以看到 已经安装好了

然后 在 把 ~/go/bin 放到环境变量里面 去, 不然 protoc 到时候 找不到 这个插件

$ export PATH="$PATH:$(go env GOPATH)/bin" 注意这个命令 的环境变量只是 当前 shell 有效 ,你重新开个或者 重启 机器就 没有用了 ,要想永久有效的话最好 放 /etc/profile 或者 你自己的 bashrc/zshrc 里面 去

然后 就可以 执行 protoc -I="./protobuf" --go_out=./ --go-grpc_out=./ ./protobuf/user.proto 生成 grpc 实体和服务了



可以看到 service 都给你生成好了


java grpc service 生成

java 找了半天 …… 网上 都是 在 java 项目里面 装 对应 的 maven 插件 ,然后 maven 编译得到 的 ,但是这样 你 的proto 文件 必须在 java 项目里面 ,但是我的 protobuf 是 在 java 和 go 项目外面的 ,所以不适应这种情况

因此也可以 安装 protoc-gen-grpc-java 插件 来解决这个问题

protoc-gen-grpc-java 插件下载地址

下载好后 把他命名成 protoc-java-plugin 放在根目录下

然后 执行 protoc --plugin=protoc-gen-grpc-java=./protoc-java-plugin --java_out="./gateway/src/main/java" --grpc-java_out="./gateway/src/main/java" --proto_path="./protobuf" "./protobuf/user.proto"

就能看到 结果 了!

附带 spring-boot 搭配 grpc 的 文章 https://yidongnan.github.io/grpc-spring-boot-starter/zh-CN/server/getting-started.html



推荐阅读
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Hadoop平台警告解决:无法加载本机Hadoop库的全面应对方案
    本文探讨了在Hadoop平台上遇到“无法加载本机Hadoop库”警告的多种解决方案。首先,通过修改日志配置文件来忽略该警告,这一方法被证明是有效的。其次,尝试指定本地库的路径,但未能解决问题。接着,尝试不使用Hadoop本地库,同样没有效果。然后,通过替换现有的Hadoop本地库,成功解决了问题。最后,根据Hadoop的源代码自行编译本地库,也达到了预期的效果。以上方法适用于macOS系统。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。 ... [详细]
  • Shell脚本编译器的全面解析与应用指南 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 如何在Linux系统中实现Windows风格的桌面环境:将Ubuntu 18.04定制为Windows主题界面
    如果您是从Windows转到Linux系统的用户,可能会觉得默认的Ubuntu主题和桌面环境缺乏吸引力和可定制性。尤其是对于习惯了Windows风格的任务栏和主题的用户,Ubuntu 18.04的橙色主题可能显得过于简洁。为了提升用户体验,可以通过安装特定的桌面环境和主题来实现类似Windows的界面效果。本文将详细介绍如何在Ubuntu 18.04中配置和定制桌面环境,使其具备Windows风格的外观和功能。 ... [详细]
  • Windows环境下RabbitMQ安装详尽指南
    Windows环境下RabbitMQ安装详尽指南 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • Linux Shell变量初探:初始值解析与使用指南
    本文探讨了Linux Shell中变量的基本概念及其在BASH中的应用。变量是用于存储可变数据的标识符,能够代表不同的值。文章详细介绍了BASH shell的主要优势,包括强大的命令编辑能力、自动补全功能、命令别名设置、作业控制以及前后台任务管理。此外,还涵盖了编程脚本编写和通配符的使用方法,为初学者提供了全面的指导。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
author-avatar
心痛则痛1314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有