ScalaPB 实战 quickStart 【scala grpc】 1

作为 一款 面向对象函数式编程的语言 ,scala 如此优秀,可是在RPC框架中,竟然被Thrift && protobuf &&GRPC所遗忘,也有可能是scala的门槛实在是太高,导致这些rpc框架选择放弃。

不过作为越来越火的scala,自然 官方不养,就自己生嘛。 作为 scala使用GRPC 衔接的子框架:ScalaPB 无疑在众多框架中独树一帜。

https://scalapb.github.io

登录 scalaPB的官网,就可以看到相应的使用tutorial,内容非常详实,不过需要你最好有使用scala 建构工具sbt的使用经验。

预准备:

1.mac  【windows 下请大家自行尝试,估计不会太难】

2.安装 jdk 8  ,scala 2.12 ,sbt,Protobuf,grpc,IDEA IDE

3.IDEA 安装plugin:Protobuf  Support 插件

开始:

在IDEA 创建 scala  sbt 项目 ,创建及编译过程中假如出现问题,莫慌,可以查看  此文

IDEA 创建 scala sbt 项目

另外在我创建时 还出现了 因为sbt -version的问题,后来也不了了之。

等待项目编译好后,在 src/main目录下会有  scala  resources   java  三个文件夹,在src/main 文件夹中新建  名称为:protobuf 的文件夹,因为 scalaPB插件默认会在scr/main/protobuf下遍历 后缀为.proto的文件  生成scala文件。

To automatically generate Scala case classes for your messages add ScalaPB’s sbt plugin to your project. Create a file named project/scalapb.sbt  containing the following line:

addSbtPlugin("com.thesamet"%"sbt-protoc"%"0.99.8")libraryDependencies+="com.trueaccord.scalapb"%%"compilerplugin"%"0.6.0-pre4"


在 项目的project 目录下创建 scalapb.sbt 文件,然后 粘贴其上的内容  

addSbtPlugin("com.thesamet"%"sbt-protoc"%"0.99.8")libraryDependencies+="com.trueaccord.scalapb"%%"compilerplugin"%"0.6.0-pre4"

然后在 项目的 build.sbt 中插入 其上的内容 ,注意 ,一定要回车与原来的代码隔一行,否则会报错,

PB.targetsinCompile:=Seq(scalapb.gen()->(sourceManagedinCompile).value)

然后  在Terminal  进入sbt repl 环境下,输入 compile命令 ,则sbt 开始加载 scalapb 插件。

假如你需要在 sbt  compile 编译时就从protobuf文件生成scala文件则 需要在build.sbt中 插入

libraryDependencies+="com.trueaccord.scalapb"%%"scalapb-runtime"%com.trueaccord.scalapb.compiler.Version.scalapbVersion%"protobuf"

之后在 src/main/protobuf 目录下创建  。proto文件 ,例如创建person.proto

scalapb 默认是使用protobuf 2的,假如你想使用protobuf 3 ,则需要在proto文件中指定

另外 scalapb在生成的scala文件中存在一个bug ,就是假如在proto文件中没有指定 package ,则生成的scala文件的 package 是多一个 点.,导致文件报错,无法编译,所以需要 在proto指定包名,而且需要在 src/main/scala 下最好存在相应的package 。

还有也可以同时一起生成java 文件,需要在 build.sbt指定其命令


注意插入的时候记着隔一行回车。

在proto文件中 指定 protobuf版本 命令

syntax ="proto3";

在proto文件中指定 package名 命令

package  包名;    例如 package custom_options;

在proto文件中 引入 proto 描述文件

import       “google/protobuf/descriptor.proto";

在proto文件中 继承 重写某些方法

extend google.protobuf.FileOptions {   optional string my_file_option =50000; }

创建好的person.proto 文件如下


之后点击 IDEA 的SBT viewer 然后项目则开始根据person.proto  文件生成 scala和java文件在  项目的 /target/scala-2.12/src_managed/main中生成文件。


然后大家把生成的scala或者java 代码 粘贴到src/main /scala 相应的包中即可 ,然后可以使用

至此 scalaPB 的入门基本可以告于段落,另外 ScalaPB 还支持  单独的cli方式使用,还支持生成scala.js,还支持生成spark sql,还有json文件,默认情况下  GRPC是打开的,假如需要关闭则可以在build.sbt中指定

PB.targets  in  Compile:=Seq ( scalapb.gen(grpc=false) - >(sourceManaged in Compile).value)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容