接着之前的项目上创建一个文件夹thrift,在str目录下与main文件夹平级:

Netty的深入浅出--13.Apache Thrift的简单项目实战

在idea中添加插件使用,它的插件相比来说比protobuf的插件要强大很多:

Netty的深入浅出--13.Apache Thrift的简单项目实战

 创建文件data.thrift里面包含其中设置命令空间为java路径

Netty的深入浅出--13.Apache Thrift的简单项目实战

将thrift里面的数据类型定义成java类型,这样看起来比较舒服,而且使用起来也比较方便,现在对比发现相比之前那个protobuf来说好用多了o(* ̄︶ ̄*)o

Netty的深入浅出--13.Apache Thrift的简单项目实战

定义结构体 ,写起来跟java没啥区别了

Netty的深入浅出--13.Apache Thrift的简单项目实战

定义异常:

注意几点:如果没有写optional的话,默认是optional;

在thrift中没有日期类型,要存储日期只能使用String字符串;

Netty的深入浅出--13.Apache Thrift的简单项目实战

定义方法,其写法和java非常相似,使用required相当于一个有参方法

Netty的深入浅出--13.Apache Thrift的简单项目实战

 生产thrift相关java代码:

Netty的深入浅出--13.Apache Thrift的简单项目实战

Netty的深入浅出--13.Apache Thrift的简单项目实战

将thrift的代码复制到java目录下,方便使用:

Netty的深入浅出--13.Apache Thrift的简单项目实战

 引入相关依赖:

Netty的深入浅出--13.Apache Thrift的简单项目实战

Netty的深入浅出--13.Apache Thrift的简单项目实战

这里提醒一下大家,没必要去看那些生产的java代码,直接看.thrift文件就可以了,直接了当,而且数据本身更具有可读性。

创建一个类,然后实现来自thrift中java代码中的接口,这种代码敲起来的感觉和写java的service层那里感觉很像

Netty的深入浅出--13.Apache Thrift的简单项目实战

服务端:

创建主函数来调用ThriftServer.java

其中NonblockingServerSocket是一个非阻塞式的socket

Netty的深入浅出--13.Apache Thrift的简单项目实战

 高可用的server

Netty的深入浅出--13.Apache Thrift的简单项目实战

简单的和protobuf对比理解,相当于就是一个加入了很多处理器,对数据进行处理

Netty的深入浅出--13.Apache Thrift的简单项目实战

 客户端:

服务端用的是TFrameTransport,那客户端也得使用一样的:

600毫秒为超时时间;

Netty的深入浅出--13.Apache Thrift的简单项目实战

Netty的深入浅出--13.Apache Thrift的简单项目实战

 太晚了,我就不在细讲了

Netty的深入浅出--13.Apache Thrift的简单项目实战

运行服务端:

Netty的深入浅出--13.Apache Thrift的简单项目实战

一直处于一个运行的状态;

运行客户端:

Netty的深入浅出--13.Apache Thrift的简单项目实战

服务端 :

Netty的深入浅出--13.Apache Thrift的简单项目实战

这样一来就解决了一个很大的问题,两台计算机远程调用彼此之间的信息。 

相关文章: