ScalaPB 實戰(zhàn) quickStart 【scala grpc】 1

作為 一款 面向?qū)ο蠛瘮?shù)式編程的語言 娇妓,scala 如此優(yōu)秀,可是在RPC框架中,竟然被Thrift && protobuf &&GRPC所遺忘乍构,也有可能是scala的門檻實在是太高周崭,導(dǎo)致這些rpc框架選擇放棄柳譬。

不過作為越來越火的scala,自然 官方不養(yǎng)续镇,就自己生嘛美澳。 作為 scala使用GRPC 銜接的子框架:ScalaPB 無疑在眾多框架中獨樹一幟。

https://scalapb.github.io

登錄 scalaPB的官網(wǎng)摸航,就可以看到相應(yīng)的使用tutorial,內(nèi)容非常詳實制跟,不過需要你最好有使用scala 建構(gòu)工具sbt的使用經(jīng)驗。

預(yù)準(zhǔn)備:

1.mac ?【windows 下請大家自行嘗試酱虎,估計不會太難】

2.安裝 jdk 8 ?雨膨,scala 2.12 ,sbt读串,Protobuf聊记,grpc撒妈,IDEA IDE

3.IDEA 安裝plugin:Protobuf ?Support 插件

開始:

在IDEA 創(chuàng)建 scala ?sbt 項目 ,創(chuàng)建及編譯過程中假如出現(xiàn)問題排监,莫慌狰右,可以查看 ?此文

IDEA 創(chuàng)建 scala sbt 項目

另外在我創(chuàng)建時 還出現(xiàn)了 因為sbt -version的問題,后來也不了了之舆床。

等待項目編譯好后棋蚌,在 src/main目錄下會有 ?scala ?resources ? java ?三個文件夾,在src/main 文件夾中新建 ?名稱為:protobuf 的文件夾挨队,因為 scalaPB插件默認(rèn)會在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 目錄下創(chuàng)建 scalapb.sbt 文件,然后 粘貼其上的內(nèi)容 ?

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

然后在 項目的 build.sbt 中插入 其上的內(nèi)容 盛垦,注意 坷备,一定要回車與原來的代碼隔一行,否則會報錯情臭,

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

然后 ?在Terminal ?進(jìn)入sbt repl 環(huán)境下省撑,輸入 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 目錄下創(chuàng)建 ?竟秫。proto文件 ,例如創(chuàng)建person.proto

scalapb 默認(rèn)是使用protobuf 2的跷乐,假如你想使用protobuf 3 肥败,則需要在proto文件中指定

另外 scalapb在生成的scala文件中存在一個bug ,就是假如在proto文件中沒有指定 package 愕提,則生成的scala文件的 package 是多一個 點.,導(dǎo)致文件報錯馒稍,無法編譯,所以需要 在proto指定包名浅侨,而且需要在 src/main/scala 下最好存在相應(yīng)的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; }

創(chuàng)建好的person.proto 文件如下


之后點擊 IDEA 的SBT viewer 然后項目則開始根據(jù)person.proto ?文件生成 scala和java文件在 ?項目的 /target/scala-2.12/src_managed/main中生成文件鼓黔。


然后大家把生成的scala或者java 代碼 粘貼到src/main /scala 相應(yīng)的包中即可 ,然后可以使用

至此 scalaPB 的入門基本可以告于段落不见,另外 ScalaPB 還支持 ?單獨的cli方式使用澳化,還支持生成scala.js,還支持生成spark sql,還有json文件稳吮,默認(rèn)情況下 ?GRPC是打開的缎谷,假如需要關(guān)閉則可以在build.sbt中指定

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


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市灶似,隨后出現(xiàn)的幾起案子列林,更是在濱河造成了極大的恐慌眼虱,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件席纽,死亡現(xiàn)場離奇詭異,居然都是意外死亡撞蚕,警方通過查閱死者的電腦和手機润梯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甥厦,“玉大人纺铭,你說我怎么就攤上這事〉陡恚” “怎么了舶赔?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長谦秧。 經(jīng)常有香客問我竟纳,道長,這世上最難降的妖魔是什么疚鲤? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任锥累,我火速辦了婚禮,結(jié)果婚禮上集歇,老公的妹妹穿的比我還像新娘桶略。我一直安慰自己,他們只是感情好诲宇,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布际歼。 她就那樣靜靜地躺著,像睡著了一般姑蓝。 火紅的嫁衣襯著肌膚如雪鹅心。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天纺荧,我揣著相機與錄音巴帮,去河邊找鬼。 笑死虐秋,一個胖子當(dāng)著我的面吹牛榕茧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播客给,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼用押,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了靶剑?” 一聲冷哼從身側(cè)響起蜻拨,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤池充,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缎讼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體收夸,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年血崭,在試婚紗的時候發(fā)現(xiàn)自己被綠了卧惜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡夹纫,死狀恐怖咽瓷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舰讹,我是刑警寧澤茅姜,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站月匣,受9級特大地震影響钻洒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锄开,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一航唆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧院刁,春花似錦糯钙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狡刘,卻和暖如春享潜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗅蔬。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工剑按, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人澜术。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓艺蝴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸟废。 傳聞我的和親對象是個殘疾皇子猜敢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容