Apache Thrift学习入门之包含struct结构的thrift文件

=Start=

缘由:

之前在学习Thrift的时候整理了一篇《Apache Thrift学习入门之代码演示》的文章,基本原理以及编写方法里面基本上都有,但是对应的.thrift文件非常简单,在某些场景下可能不太适用,所以,这里把最近用到的包含struct结构的thrift文件及相关样例代码整理一下,方便以后参考。

正文:

参考解答:

假设有一个场景——需要用thrift传map,但是map的key/value类型又不固定,存在String/Integer等多种可能。这里为了演示方便起见,假设key的类型固定为String,value的类型可能为String,也可能为Integer,比如:

在Java里面可能还比较好处理,new一个Map<String, Object>对象就行了,value随便是什么类型都可以应对。但是Thrift里面是没有Object类型的,所以,对应的.thrift文件该怎么写呢?咨询了别人之后,了解到,可以通过struct来间接实现:

通过命令生成代码之后,将对应的ParaMapService.java文件以及value.java文件拷贝到自己的项目对应路径中。并编写实现接口Iface代码:

再来编写Server端代码,和之前的基本没区别,就是名字不一样:

然后是Client调用端代码:

 

从上面的代码来看,对于不确定类型的情况Thrift处理起来会比较麻烦(客户端得set,服务端也得get,而且在get的时候还要进行判断),Thrift的规范比较死板(不灵活),但也就是这种死板减少了出错的可能性,按需选择吧。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4026.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注