thrift系列 - 快速入门

来源:互联网 发布:文主席万寿无疆知乎 编辑:程序博客网 时间:2024/04/28 03:09
1.简介
           Thrift是当前流行的RPC框架之一,它有强大的代码生成引擎,可以跨语言,轻松解决程序间的通信问题。

本文旨在帮助大家快速入门,若想深入原理,请参见thrift官网:http://thrift.apache.org/。(大家都很忙,少说废话)


2.下载windows版的IDL compiler

     访问地址:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.exe,在打开的页面中,任选一个资源下载。
      下载完成后,假设我把thrift-0.9.3.exe文件移到"F:\test\thrift\bin"(你想移到哪儿你随意) 这个文件夹下。


3.定义接口文件

      新建一个名为test.thrift的文件。以下是该文件里的内容:
      

namespace java test.thrift_testservice TestService {  string getStruct(1: i32 num,2: string name)}
          这就是一个很简单的接口文件。thrift的引擎(此处你可以理解为thrift-0.9.3.exe),就要利用test.thrift生成你指定的语言的代码。这个接口有两个参数,一个是32位的整数,一个是一个字符串,返回值的类型也是一个字符串。关于接口文件定义的方式,请参见下一篇文章《thrift类型定义》。


4.利用接口文件生成代码

     打开windows的命令行(这个你不要问我)。切换到"F:\test\thrift\bin"(第2步的时候说过)
     使用命令:thrift-0.9.3.exe -r --gen java test.thrift
     打开"F:\test\thrift\bin"这个目录,你会发现有一个名为"gen-java"的文件夹,该文件夹下就是生成的java代码。


5.搭建maven环境

     利用你的Java IDE构建一个maven工程。这里是pom.xml中需要添加的内容:

<dependency><groupId>org.apache.thrift</groupId><artifactId>libthrift</artifactId><version>0.9.3</version></dependency>
       这里面有thrift运行时所需要的所有依赖jar。

    注意,请把gen-java文件夹下的代码粘贴到工程中去!


6.java版demo

     首先把首先实现TestService接口:

package test.thrift_test;import org.apache.thrift.TException;import test.thrift_test.TestService.Iface;//我们定义的test.thrift的接口的具体实现class TestServiceHandler implements Iface{public String getStruct(int num, String name) throws TException {return name + num;}}


        Thrift是CS的通信方式,即有一个server端,和一个client端。

     以下是Server端的示例代码:

package test.thrift_test;import org.apache.thrift.server.TServer;import org.apache.thrift.server.TServer.Args;import org.apache.thrift.server.TSimpleServer;import org.apache.thrift.transport.TServerSocket;import org.apache.thrift.transport.TServerTransport;import org.apache.thrift.transport.TTransportException;public class Server {public static void main( String[] args ){    try {    TestService.Processor processor = new TestService.Processor(new TestServiceHandler());    TServerTransport serverTransport = new TServerSocket(9090);TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));server.serve();    } catch (TTransportException e) {e.printStackTrace();}    }}

      

        以下是Client端的示例代码:

package test.thrift_test;import org.apache.thrift.TException;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.protocol.TProtocol;import org.apache.thrift.transport.TSocket;import org.apache.thrift.transport.TTransport;import org.apache.thrift.transport.TTransportException;public class Client {public static void main(String[] args) {TTransport transport = new TSocket("localhost", 9090);try {transport.open();TProtocol protocol = new TBinaryProtocol(transport);TestService.Client client = new TestService.Client(protocol);String result = client.getStruct(123, "test");System.out.println(result);transport.close();} catch (TTransportException e) {e.printStackTrace();} catch (TException e) {e.printStackTrace();}}}

             启动的时候,先运行 Server.java,再运行Client.java。正常情况下,控制台输出结果为:test123


        本文内容参考如下:

        【1】http://thrift.apache.org/


        注意:
        如您发现本文档中有明显错误的地方,
        或者您发现本文档中引用了他人的资料而未进行说明时,请联系我进行更正。
        转载或使用本文档时,请作醒目说明。
        必要时请联系作者,否则将追究相应的法律责任。

        note:
        If you find this document with any error ,
        Or if you find any illegal citations , please contact me correct.
        Reprint or use of this document,Please explain for striking. 
        Please contact the author if necessary, or they will pursue the corresponding legal responsibility.








1 0
原创粉丝点击