上一篇文章我们了解了thrift的概念以及类型系统,本文我们通过一个简单的实例来更深入地了解thrift的使用。我们的实例非常简单,就是实现一个登录注册功能,其用户名密码缓存在内存中。
编写thrift文件
我们编写一个account.thrift
的文件。
namespace java me.wuchong.thrift.generated |
然后在命令行下运行如下命令:thrift --gen java account.thrift
则会在当前目录生成gen-java
目录,该目录下会按照namespace定义的路径名一次一层层生成文件夹,如下图所示,在指定的包路径下生成了4个类。

服务实现
到此为止,thrift已经完成了其工作。接下来我们需要做的就是实现Account
接口里的具体逻辑。我们创建一个AccountService
类,实现Account.Iface
接口。逻辑非常简单,将用户账户信息缓存在内存中,实现登录注册的功能,并且对一些非法输入状况抛出异常。
package me.wuchong.thrift.impl; |
启动服务端和客户端
我们实现了服务的具体逻辑,接下来需要启动该服务。这里我们需要用到thrift的依赖包。在pom.xml中加入对thrift的依赖。
<dependency> |
注:如果你的依赖中没有加入slf4j的实现,则需要加上slf4j-log4j12或者logback的依赖,因为thrift有用到slf4j
启动服务的实现如下:
package me.wuchong.thrift.impl; |
运行之后,可以在控制台看到输出:Starting the Account server...
目前服务已经启动,则在客户端就可以进行RPC调用了。启动客户端的代码如下:
package me.wuchong.thrift.impl; |
运行客户端,其结果如下所示。
Login failed!! please check your username and password |
而此时,服务端会打印出收到的请求信息。
Starting the Account server... |
你可以发现,只需要几行代码,我们就实现了高效的RPC通信。
##参考资料