Scala 作为 被Thrift官方忽略的RPC孤儿,只能自我强大,
RPC 服务端 没有scala 怎么可能完整呢,
幸好 Twitter 老厂 厚积薄发,早在几年前就有了自己的Thrift插件 :Scrooge
https://twitter.github.io/scrooge/
首先呢 ,官方的Tutorial 比较老旧没有更新了,结果就有很多坑,真的是摸着石头过河
Scrooge 可以作为sbt 或者maven 插件使用
预准备
1 Mac 【当然使用windows 也是可以的】
2 JDK8
3 Scala 2.12
4 SBT 0.13.5
5 Thrift 0.10.0
3.IDEA IDE ,thrift support idea plugin
IDEA 创建 Scala sbt项目,在项目中 引入 Scrooge 的sbt plugin 依赖和Scrooge的jar 包依赖,官网的jar包和插件 版本比较古老,引用不到,会报错,根据自己的的摸索,得到最新的版本
首先在 项目的 project 目录下的 plugins.sbt中添加 scrooge插件依赖
addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "4.16.0")
然后在项目的build.sbt 中添加 Scrooge jar包组合依赖
// Exclusion rule required to evict the com.twitter libthrift library.
libraryDependencies ++= Seq(
"org.apache.thrift" % "libthrift" % "0.10.0",
"com.twitter" %% "scrooge-core" % "4.16.0" exclude("com.twitter", "libthrift"),
"com.twitter" %% "finagle-thrift" % "6.44.0" exclude("com.twitter", "libthrift")
)
scrooge-sbt-plugin 低于4.16.0版本的, 引用的thrift版本非常低 是0.50. 所以会报错
scrooge-core也要使用 4.16版本的
finagle-thrift根据scala 版本2.12.0发现 引用 其6.44.0才可以正常使用。
然后 使用 sbt viewer 点击 同步 按钮,则会自动引入jar包。
scrooge 默认是会遍历 /src/main/thrift 目录下的 thrift文件
然后生成的scala文件是在target/scala[version]/src_managed 目录下
等文件生成后,粘贴到主要包内即可开始使用,
在 src/main/thrift目录下创建thrift文件, 或者复制 其他thrift到其目录
然后在 在项目 Terminal中 输入
sbt compile
就会自动生成 对应的scala代码
另外 也可以单独使用 scrooge 的command line
在项目 Terminal 中 输入
sbt scrooge-gen
另外使用
sbt plugins
命令查看 该项目中可以使用的sbt 插件
另外建议额外添加 依赖树列表插件
https://my.oschina.net/u/1450520/blog/639217
需要用到插件,地址:
https://github.com/jrudolph/sbt-dependency-graph
- 添加插件(请用最新的0.7.5)
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.5")
- 在build.sbt添加配置
net.virtualvoid.sbt.graph.Plugin.graphSettings
- 查看依赖
$ sbt dependency-tree
或者
sbt dependency-graph