热门标签 | 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如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 20145216《信息安全系统设计基础》第一周学习总结教材学习内容总结Linux基础1.ls命令ls或ls.显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的 ... [详细]
  • 今天才发现了一个刷新三观的问题。那就是pycharm的底层集成的debugger功能其实是依赖于几个测试框架。。现在由于要写基于pytest的测试,但是如果到zsh里 ... [详细]
  • MNN windows
    参考:编译转换工具:https:blog.csdn.netjacke121articledetails106407234解决flatc.exe找不到 ... [详细]
  • 回到全局目录--------------------------------------------------------目录RPM部分1简介1安装1卸载 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 本文介绍了在Go语言中可见性与scope的规则,包括在函数内外声明的可见性、命名规范和命名风格,以及变量声明和短变量声明的语法。同时,还介绍了变量的生命周期,包括包级别变量和局部变量的生命周期,以及变量在堆和栈上分配的规则和逃逸分析的概念。 ... [详细]
  • 为什么jupyterlab运行程序的时候会自动停止_JupyterLab史上最全详解,全网都在看,赶紧收藏...
    点击上方蓝字关注我们!Jupyter源于IpythonNotebook,是使用Python(也有R、Julia、Node等其他语言的内核)进行代码演示、 ... [详细]
  • 本篇博文面向Linux用户,在Linux下(0x00为什么需要有两个版本的PythonPython2和Python3不兼容是每个接触过Python的那就把Python ... [详细]
  • 0.编写.proto文件:syntaxproto3;optionjava_multiple_filestrue;optionjava_packageio.grp ... [详细]
  • maven编译protobufpom添加如下依赖1.6.12.6 ... [详细]
  • 本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下:使用ProtocolBuffers的跨平台RPC系统。安装使用pi ... [详细]
  • linux中znyw用户名,关于Linux,用户,组,权限,文本处理工具,正则表达式,vim文本编辑器(示例代码)...
    一、用户??在Linux系统中,可以创建多个用户,每一个用户都有一个与其对应的ID号,就像每一个人都有一个号一样,这就是用户 ... [详细]
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社区 版权所有