`

thrift 基本应用

阅读更多
看到一篇介绍thrift 最基本应用的 几句话就可以说清楚怎么使用 记录下

简单的实现一个PING的功能

1.安装thrift

http://thrift.apache.org/download/

人人网镜像下载:

http://labs.renren.com/apache-mirror/thrift/0.6.1/thrift-0.6.1.exe

2.编写Thrift文件(定义接口,结构,异常等),保存为test.thrift


namespace java com.netqin

service ThriftService{
void ping(1: i32 length),
}


3.生成接口代码

把thrift-0.6.1.exe和test.thrift文件放在同一个目录,当然也可以把thrift-0.6.1.exe文件放进环境变量

进入DOS命令执行:thrift-0.6.1.exe --gen java test.thrift

生成文件 gen-java/net/johnc/thrift/Test.java

4.编写服务端接口实现类

在POM.xml文件加入以下依赖:


<dependency>     
<groupId>org.apache.thrift</groupId>      <artifactId>libthrift</artifactId>
      <version>0.6.1</version>
</dependency>


  把生成的Test.java复制到项目下 并实现该接口
 package net.johnc.thrift;
 2 
 3  import org.apache.thrift.TException;
 4 
 5  public class TestImpl implements Test.Iface {
 6 
 7     public void ping(int length) throws TException {
 8         System.out.println("calling ping ,length=" + length);
 9     }
10 
11 }


5.编写启动服务代码

package net.johnc.thrift;
 
  import net.johnc.thrift.Test.Processor;
 
  import org.apache.thrift.protocol.TBinaryProtocol;
  import org.apache.thrift.protocol.TBinaryProtocol.Factory;
  import org.apache.thrift.server.TServer;
  import org.apache.thrift.server.TThreadPoolServer;
  import org.apache.thrift.server.TThreadPoolServer.Args;
  import org.apache.thrift.transport.TServerSocket;
  import org.apache.thrift.transport.TTransportException;
 
  public class Server {
     public void startServer() {
         try {
 
             TServerSocket serverTransport = new TServerSocket(1234);
 
             Test.Processor process = new Processor(new TestImpl());
 
             Factory portFactory = new TBinaryProtocol.Factory(true, true);
 
             Args args = new Args(serverTransport);
             args.processor(process);
             args.protocolFactory(portFactory);
 
             TServer server = new TThreadPoolServer(args);
             server.serve();
         } catch (TTransportException e) {
             e.printStackTrace();
         }
     }
 
     public static void main(String[] args) {
         Server server = new Server();
         server.startServer();
     }
 }


6.编写客户端代码
package net.johnc.thrift;
 
  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 void startClient() {
         TTransport transport;
         try {
             transport = new TSocket("localhost", 1234);
             TProtocol protocol = new TBinaryProtocol(transport);
             Test.Client client = new Test.Client(protocol);
             transport.open();
             client.ping(2012);
             transport.close();
         } catch (TTransportException e) {
             e.printStackTrace();
         } catch (TException e) {
             e.printStackTrace();
         }
     }
 
     public static void main(String[] args) {
         Client client = new Client();
         client.startClient();
     }
 }





分享到:
评论

相关推荐

    thrift实现http协议案例

    首先,让我们了解一下Thrift的基本工作原理。Thrift基于接口描述语言(IDL),开发者可以在IDL文件中定义服务接口和数据类型。例如: ```thrift service MyService { string echo(1: string msg) } ``` 这个服务...

    thrift-Demo

    Thrift是一种开源的跨语言服务开发框架...通过这个示例,你可以学习到Thrift的基本使用,包括服务定义、编译、服务端和客户端的实现,以及如何进行跨语言通信。这对于理解和应用Thrift来构建分布式系统是非常有帮助的。

    thrift开源项目研究

    一、Thrift的基本概念 1. 数据序列化:Thrift提供了自己的数据描述语言(IDL),允许开发者定义数据结构和服务接口。这些定义会被编译成不同语言的代码,实现数据的高效序列化和反序列化。 2. RPC框架:Thrift通过...

    Thrift 使用

    一、Thrift的基本概念 1. IDL(Interface Definition Language):Thrift使用类似C++的语法来定义服务接口和数据结构,这被称为IDL文件。例如,你可以定义一个服务和它的方法,以及结构体(struct)来传递数据。 2...

    thrift-delphi实例

    Thrift Delphi的实例不仅提供了基本的通信机制,还展示了如何处理数据类型、异常、以及多服务的集成。 此外,Thrift支持多种传输层协议(如TCP、HTTP、ZMQ等),以及多种传输格式(如二进制、JSON等),可以根据...

    C++(Qt)下的thrift的使用示例

    总的来说,“C++(Qt)下的thrift的使用示例”涵盖了在Qt环境下集成Thrift服务的基本步骤,包括安装依赖、编写IDL、生成代码、实现服务和客户端,以及利用Qt的特性来优化通信过程。理解并掌握这些知识,将有助于你在...

    thrift-0.9.1.exe和thrift-0.9.2.exe

    Thrift允许不同编程语言之间的应用程序无缝通信,减少了开发分布式系统时的复杂性。 标题中的"thrift-0.9.1.exe"和"thrift-0.9.2.exe"是Thrift框架的不同版本。这些文件是Windows平台上的可执行程序,用于生成与...

    thrift1 查询hbase

    Thrift接口将HBase的操作转换为易于理解和使用的API,用户可以通过这些API执行基本的CRUD(创建、读取、更新、删除)操作。 3. **Python与HBase通信**:Python客户端通过导入Thrift生成的库,可以建立到HBase ...

    thrift0.9.3附带jar包

    Thrift 是一个开源的软件框架,它用于构建可伸缩的服务和应用程序,通过定义服务接口,Thrift 能够自动生成跨语言的客户端和服务器代码,使得不同编程语言之间能够轻松进行通信。这个压缩包“thrift0.9.3附带jar包”...

    thrift.0.9.3.tar.gz

    7. **框架和库**:除了基本的编译器和协议,Thrift还提供了一些辅助库,如线程管理、异常处理、缓存策略等,方便开发者构建更复杂的服务。 在实际使用Thrift时,开发者首先定义服务接口和数据结构,然后用Thrift...

    thrift例子

    总之,"thrift例子"是一个关于如何使用Thrift进行跨语言服务开发的实际操作案例,涵盖了Thrift的基本用法和服务端与客户端的实现。通过学习和实践这个例子,可以深入了解Thrift的工作原理和优势,为构建分布式系统...

    thrift 教程

    3. **数据类型**:Thrift 支持多种基本数据类型,如i8, i16, i32, i64(整型)、double(双精度浮点型)、string(字符串)、bool(布尔型)以及更复杂的结构体和列表、映射等复合类型。 4. **传输层与协议**:...

    thrift操作Hbase数据库

    首先,我们需要在Hbase服务器上安装并配置Thrift服务,然后在客户端(这里是C#应用)中引用Thrift生成的Hbase接口库。Thrift的IDL(Interface Description Language)文件定义了与Hbase交互的协议,包括表的操作、行...

    Thrift简单调用demo代码

    通过学习这个示例,你可以理解Thrift的基本工作原理,包括定义服务接口、生成代码、实现服务逻辑、启动服务、创建客户端以及进行RPC调用。掌握这些知识后,你就能在自己的项目中灵活地应用Thrift,实现跨语言、跨...

    Thrift白皮书阅读笔记

    Thrift 是一个由 Facebook 开发的开源框架,其主要目的是为了简化和加速跨语言的后端服务开发。...在实际应用中,Thrift 被广泛用于构建分布式系统、微服务架构和大数据处理场景,尤其是在需要多种语言协作的环境中。

    thrift编译的小test程序

    Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年创建,并于2008年贡献给了Apache基金会。...通过这个程序,你可以深入理解Thrift的工作原理,并掌握如何在实际项目中应用Thrift来构建高效的跨语言通信系统。

    thrift入门教程+代码

    Thrift是一种开源的跨语言服务开发框架,由...在实际应用中,Thrift常被用于构建大规模微服务架构,尤其是在需要多语言互操作的场景下。通过深入学习Thrift,你可以更好地理解和实践服务化、分布式系统的设计与实现。

    thrift通讯的例子

    Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年设计并发布,...通过学习和实践"Thrift通讯的例子",我们可以深入理解Thrift的工作原理,并掌握如何在实际项目中应用Thrift来构建高效、可扩展的微服务架构。

    thrift jar包及相关学习步骤

    学习Thrift,首先需要理解其基本概念: 1. **Thrift IDL**: Thrift Interface Description Language,类似于XML或protobuf的语法,用于定义服务接口、数据结构和枚举类型。 2. **Thrift编译器**: 使用.thrift文件...

    flume通过thrift协议收集日志-Python

    在 Flume 中使用 Thrift Source,可以使得外部应用程序(如 Python)能够将数据推送到 Flume。Python 应用程序将扮演 Flume Source 的角色,通过 Thrift 协议与 Flume 进行通信。Thrift 提供了 IDL(接口定义语言)...

Global site tag (gtag.js) - Google Analytics