thrift客户端连接池封装

本篇只是在实际中使用的一个例子,thrift具体的源码分析请参考网上其它同行的高见。可以参考:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/。在使用的过程中发现,thrift的一个客户端不是线程安全的,如果有多个线程同时请求信息就会报错。我加了一个thrift客户端连接池,每个线程可以从thrift客户端连接池中获取一个thrift客户端。这个thrift客户端连接池是基本common-pool2实现的(关于common-pool2详细可以参考:http://www.youxijishu.com/h-nd-152-2_323.html)。

一,下载安装包和Java依赖包

http://thrift.apache.org/download

(1)Java项目maven 引用:

<dependency>

 <groupId>org.apache.thrift</groupId>

 <artifactId>libthrift</artifactId>

 <version>0.9.3</version>

</dependency>

(2)windows编译工具

http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.exe

二,thrift文件编写

  thrift是跨平台的rpc工具,所以它类似与protobuffer,有一个定义格式的脚本IDL语言,需要手动编写,可以参考:http://thrift.apache.org/docs/types,上面有它支持的数据类型。编写好之后(这里有一个官方的IDL语言例子:https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=test/ThriftTest.thrift;hb=HEAD),使用thrift-0.9.3.exe生成相应的平台代码。我们这里使用的是Java。

 

三,简单通信的例子

  1,.thrift文件

namespace java yhhx.rpc.impl

 

service LoginServerRpc {

bool isLogin(1:i64 userId,2:string token)

}

 

这个游戏逻辑服务器是向登陆服务器请求验证这个游戏玩家是否登陆了的一个rpc调用。

 

2,生成类

运行工具:thrift-0.9.3.exe -r --gen java UserService.thrift

 

3,实际调用

本来是贴代码的,发现代码太多了,有点凑页的嫌疑。就压缩了一个包,有需要的可以去下载。这个源码没有加完成的包结构,只是纯粹的代码,代码类也不是太多,供参考使用。

  

 

 更多游戏技术资料请参照:游戏技术网http://www.youxijishu.com/

posted @ 2016-11-30 16:49  游戏技术  阅读(2299)  评论(0编辑  收藏  举报