ja-micro是在Java中使用的,用于创建微服务的轻量级框架。
Ja-micro是由Sixt开发,并且托管到github的一个开源项目,诞生于2016年,还非常的年轻,所以在网上其资料非常的稀少,除了能够在github上面找到一些官方公开的资料外,目前在其它位置几乎找不到相关的资料。其托管的地址是:https://github.com/Sixt/ja-micro。
一个很偶然的机会,我所在的团队用go-micro作为底层平台,为方便在上面嵌人各种微服务,需要使用ja-micro框架来开发。由此开始认识了ja-micro。本节主要介绍如何在一个Java工程中引用Ja-micro。
ja-micro是用gradle构建出来的。如果你的工程是用gradle或者maven构建的,那么,恭喜你,这样你可以很轻松的将ja-micro集成到你的工程里面。以maven工程为例。在你的pom.xml文件中找到<dependencies>节点,然后在下面增加两个依赖,就可以使用maven 里面的update project来更新你的工程了。
<dependency>
<groupId>com.sixt.service</groupId>
<artifactId>ja-micro</artifactId>
<version>3.1.4</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.sixt.service</groupId>
<artifactId>ja-micro</artifactId>
<version>3.1.4</version>
</dependency>
不知道是什么原因,当我一开始加上这两个依赖后,更新我的jar仓库时,总是不成功,总是有一些jar文件没有成功更新下来。在eclipse里面,我打开工程的pom.xml后,切换成dependencies视图,在窗口上面找到报错的jar,逐个手工下载下来,再添加到我的m2仓库里面,才算解决这个问题。如下图示:
是不是很奇怪我的工程没报错?是的,因为我都已经下载了所有依赖的jar文件,解决了缺少jar文件的错误:)
从图中看到我用的ja-micro版本是3.1.4的,事实上,我开始用这个的时候,版本是3.1.0,而当我写篇博客的时候,版本已经更新到了3.1.8了。前后也就一个月左右的时间而已。这说明ja-micro还是更新的很快,作者还在对它不断更新,让它变得更完善。
在这里重点介绍一下为什么要添加这两个依赖,除了一个有<type>标签,另外一个没有<type>标签以外,这两个依赖几乎一模一样。没有<type>标签,这是说我的工程里面要引入ja-micro-3.1.4。jar这个包,我会用到这个包里面的一些类和方法,这事实上是<type>jar</type>的一种减写。加上了<type>pom</pom>这个标签的依赖,是因为ja-micro不是从零开始写的,它也用了很多jar包,它里面也依赖了很多的jar包,比如谷歌推出的protobuf、web容器jeety、docker等很多的jar包。只单纯引用ja-micro-3.1.4.jar,工程是run不起来的,因为很多关键的类会找不到,所以需要下载它所依赖的很多jar文件。最简单的方法就是在你的pom.xml里面加上
<dependency>
<groupId>com.sixt.service</groupId>
<artifactId>ja-micro</artifactId>
<version>3.1.8</version>
<type>pom</type>
</dependency>
或许,由于网络问题,你无法通过maven下载完所有依赖的jar文件,但只要在这个ja-micro-3.1.4.pom文件中找到需要用到哪些jar,你一定可以跟我一样从各种途径将所有的jar文件下载全,并妥妥的放到你的maven本地仓库中。
或许别的jar文件好找,但事实上,对我而言,最困难的是找到ja-micro-3.1.4.jar和ja-micro-3.1.4.pom,我在整个互联网里面找遍了,最后才在https://dl.bintray.com/sixt/ja-micro/com/sixt/service/ja-micro/3.1.4/找到了我需要的jar和pom文件。当我把它们丢到我的maven本地仓库对应位置后,接下来的一切开始向好的方向发展了。
上面介绍了如何在maven工程里面将ja-micro添加进来。如果不是maven,而是一个其它的工程,例如一个普通的工程,该如何用ja-micro进行微服务开发呢?在maven工程里面,由于jar文件主要是通过maven工具管理的,所以我们几乎不需要自己手工管理依赖的Jar包。如果只是普通工程,得通过pom文件查旬其所依赖的所有jar,如果pom文件描述的还对pom的依赖,那就真的是欲哭无泪了。我大概数了一下,在我的工程中,通过maven依赖的jar文件有70多个。自己手工下载,这个工作量,想来也是非常的令人happy,很折腾。HOHO