Apache Thrift:简单的使用demo
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Thrift:简单的使用demo相关的知识,希望对你有一定的参考价值。
当前版本:jdk1.8
、thrift 0.16.0
1. 声明
当前内容主要简单的使用thrift实现客户端和服务端,主要从apache iotdb中得知,详情可以查看官方
1. 下载thrift(apache 官方访问不是很好可以直接使用华为mirror)
下载即可(本人使用exe的,建议也下载gz的,gz的中有tutorial)
2. 使用官方的Demo
1.将gz中的tutorial中的shade.thrift和tutorial.thrift拷贝到thrift-0.16.0.exe同级目录下
2.使用cmd并执行:thrift-0.16.0.exe -r --gen java tutorial.thrift
此时在该目录下会生成gen-java文件并会生成对应的代码
3. 将gz中的tutorial中的java内src内容部分考入到项目,同时将上面生成的也放入项目中
4. 修改部分JavaClient和JavaServer中的代码(只使用simple即可)
5. 启动JavaServer然后在启动JavaClient结果如下
发现执行成功!通过查看代码和tutorial.thrift文件可以得到具体实现
3. 模仿并实现自己的HiService
1. 创建test.thrift
// 定义一个服务就是HiService
service HiService
void hello()
2. 使用命令生成HiService.java文件
3. 实现HiService中的Iface(即server端的处理)
public class HiServiceHandler implements HiService.Iface
@Override
public void hello() throws TException
System.out.println("hello called !");
4. 编写HiServiceServer和HiServiceClient
public class HiServiceClient
public static void main(String[] args)
TTransport transport;
try
transport = new TSocket("localhost", 9090);
transport.open();
TProtocol protocol = new TBinaryProtocol(transport);
HiService.Client client = new HiService.Client(protocol);
client.hello();
System.out.println("send msg to HiServiceServer!");
transport.close();
catch (TException e)
// TODO Auto-generated catch block
e.printStackTrace();
public class HiServiceServer
public static void main(String[] args)
HiServiceHandler handler = new HiServiceHandler();
TProcessor processor = new HiService.Processor(handler);
try
TServerTransport serverTransport = new TServerSocket(9090);
TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
System.out.println("Starting the simple server...");
server.serve();
catch (Exception e)
e.printStackTrace();
5. 测试
实现客户端和服务端非常容易
4. 总结
1. thrift使用thrift来限定当前的客户端和服务端的交流,可以快速实现rpc通信程序
2. 必须使用thrift特定的语法方式实现,必须学会定义
以上是关于Apache Thrift:简单的使用demo的主要内容,如果未能解决你的问题,请参考以下文章
Apache Flink:使用Apache Kafka作为Sink的简单demo(数据结果存放地方)
Apache IoTDB源码解析(0.11.2版本):Session的源码解析