美文网首页
thrift 简介三

thrift 简介三

作者: sunny4handsome | 来源:发表于2017-12-11 20:04 被阅读0次

thrift 使用
之前我们看了一些thrift的概念,现在我们通过hello world来学习thrift的使用。

thrift idl

service HelloWorldService{
    string sayHello(1:string username)
}

通过thrift生成对应的代码

thrift 安装

thrift 生成代码

thrift -r -gen java hello.thrift

code

pom文件

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
            <version>0.10.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.0</version>
        </dependency>
    </dependencies>

实现

public class HelloWorldImpl implements HelloWorldService.Iface{
    @Override
    public String sayHello(String username) throws TException {
        return "hi, "+ username;
    }
}

server

public class AppServer {
    public static void main(String[] args) {
        AppServer appServer = new AppServer();
        appServer.startServer();
    }
    public void startServer(){
        TProcessor tProcessor = new HelloWorldService.Processor<HelloWorldImpl>(new HelloWorldImpl());
        try {
            TServerSocket serverSocket = new TServerSocket(8090);
            TServer.Args tArgs = new TServer.Args(serverSocket);
            tArgs.processor(tProcessor);
            tArgs.protocolFactory(new TBinaryProtocol.Factory());
            TServer server = new TSimpleServer(tArgs);
            server.serve();
        } catch (TTransportException e) {
            e.printStackTrace();
        }

    }
}

client

public class AppClient {
    public static final String SERVER_IP = "localhost";
    public static final int SERVER_PORT = 8090;
    public static final int TIMEOUT = 30000;

    public void startClient(String username){
        TTransport transport = null;
        transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT);
        TProtocol protocol = new TBinaryProtocol(transport);
        HelloWorldService.Client client = new HelloWorldService.Client(protocol);
        try {
            transport.open();
            String result = client.sayHello(username);
            System.out.println("get server result = " + result);
        } catch (TTransportException e) {
            e.printStackTrace();
        } catch (TException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        AppClient appClient = new AppClient();
        appClient.startClient("payne");
    }
}

上面的是简单的单线程服务模型,一般用于测试。
除此之外还有模型如下:根据实际选用:

  • TThreadPoolServer 服务模型
    线程池服务模型,使用标准的阻塞式IO,预先创建一组线程处理请求。
  • TNonblockingServer 服务模型
    使用非阻塞式IO,服务端和客户端需要指定 TFramedTransport 数据传输的方式。
  • THsHaServer服务模型
    半同步半异步的服务端模型,需要指定为: TFramedTransport 数据传输的方式。
  • 异步客户端

相关文章

  • thrift 简介三

    thrift 使用之前我们看了一些thrift的概念,现在我们通过hello world来学习thrift的使用。...

  • thrift 简介

    thrift 基本概念、数据类型thrift 简介一 thrift 基本类概述、序列化协议thrift 简介二 t...

  • Thrift入门

    原文链接:thrift入门 转载请注明出处~ Thrift简介 什么是thrift 简单来说,是Facebook公...

  • Thrift简介

    thrift最初由Facebook研发,主要用于各个服务之间的RPC通信,支持跨语言,常用的语言 ActionSc...

  • thrift事件交互

    一、thrift 1 thrift简介Thrift是一个RPC框架,由facebook开发。它支持可扩展且跨语言的...

  • Thrift小试牛刀——在Windows中通过Thrift实现简

    成功的秘诀,在永不改变既定的目的。 —— 卢梭 Thrift简介 The Apache Thrift softwa...

  • Go实践:基于Thrift框架的Go-RPC简单示例

    Thrift架构简介 Thrift自顶向下可分为四层 Server(single-threaded, event-...

  • Thirft

    一、About thrift二、什么是thrift,怎么工作?三、Thrift IDL四、Thrift D...

  • python2访问CDH HBase Thrift2

    简介 HBase Thrift Server是hbase基于Apache Thrift开发用来提供对多语言支持的服...

  • thrift 简介一

    Thrift最初由Facebook研发,主要用于各个服务之间的RPC通信,支持跨语言,常用的语言比如C++, Ja...

网友评论

      本文标题:thrift 简介三

      本文链接:https://www.haomeiwen.com/subject/nidwixtx.html