Apache thrift 安装及使用

本篇介绍Apache thrift windows安装教程。

一.首先在Apache官网下载thrift 编译应用,戳这里下载 http://thrift.apache.org/download

下载好windows 版本的exe文件。在c盘新建一个Thrift文件夹,将下载好的thrift-xxx.exe文件该名成 thrift.exe,放入Thrift文件夹中。

二.配置环境变量

然后运行cmd命令,输入 thrift  -version。看到如下版本信息,则表示thrift 安装成功。

是不是很easy! 接下来就可以干正事了。

三.编写thrift脚本文件,生产对应语言的代码,此处我使用java作为案例。

namespace java com.zhj.thrift.server  // defines the namespace   

typedef i32 int  //typedefs to get convenient names for your types
typedef i16 short
typedef i64 long

service HelloService{
    int add(1:int num1,2:int num2)
    short getShort(1:short value)
    long getLong(1:long value)
    string sayHello(1:string name)

}

保存该文件命名为:helloService.thrift。之后执行该文件会生成一个helloService接口的java代码.

四.找到上述文件的目录,执行该文件。执行后会在相同的目录下生成一个gen-java的包。里面就生产了helloService.java的一个类

五.新建一个Java 项目,将上述接口拷到项目中,并实现该接口。实现接口类如下:

package com.zhj.thrift.server.impl;

import org.apache.thrift.TException;
import com.zhj.thrift.server.HelloService;

public class HelloServiceImpl implements HelloService.Iface {

    @Override
    public int add(int num1, int num2) throws TException {
        return num1+num2;
    }

    @Override
    public short getShort(short value) throws TException {
        return (short) (value*2);
    }

    @Override
    public long getLong(long value) throws TException {
        Long l_value = value - 24*60*60*1000;
        return l_value;
    }

    @Override
    public String sayHello(String name) throws TException {
        return "hello " + name;
    }

}

需要引入三个jar包

libthrift-0.9.3 依赖包下载地址:http://repo1.maven.org/maven2/org/apache/thrift/libthrift/

六.编写thrift服务端类,如下:

package com.zhj.thrift.server;

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TBinaryProtocol.Factory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;

import com.zhj.thrift.server.HelloService.Processor;
import com.zhj.thrift.server.impl.HelloServiceImpl;

public class HelloServiceServer {

    public static void main(String[] args) {
        try {
            // 设置服务器端口
            TServerSocket ts = new TServerSocket(9090);
            // 设置二进制协议工厂
            Factory protocolFactory = new TBinaryProtocol.Factory();
            //处理器关联业务实现
            Processor<HelloService.Iface> processor = new HelloService.Processor<HelloService.Iface>(new HelloServiceImpl());
            // 1. 使用单线程标准阻塞I/O模型
            TServer.Args simpleArgs = new TServer.Args(ts);
            simpleArgs.processor(processor);
            simpleArgs.protocolFactory(protocolFactory);
            TServer server = new TSimpleServer(simpleArgs);
            System.out.println("开启thrift服务器,监听端口:9090");
            server.serve();

             // 2. 使用线程池服务模型
           /* TThreadPoolServer.Args poolArgs = new TThreadPoolServer.Args(ts);
            poolArgs.processor(processor);
            poolArgs.protocolFactory(protocolFactory);
            TServer poolServer = new TThreadPoolServer(poolArgs);
            poolServer.serve();*/

        } catch (TTransportException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

七.编写thrift客户端类,如下:

package com.zhj.thrift.client;

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;

import com.zhj.thrift.server.HelloService;

public class HelloServiceClient {

    public static void main(String[] args) {

        try {
            // 设置调用的服务地址-端口
            TTransport transport = new TSocket("127.0.0.1", 9090);
            //  使用二进制协议
            TProtocol protocol = new TBinaryProtocol(transport);
            // 使用的接口
            HelloService.Client client = new HelloService.Client(protocol);
            //打开socket
            transport.open();
            System.out.println("求和:"+client.add(100, 150));
            System.out.println(client.getLong(System.currentTimeMillis()));
            System.out.println(client.sayHello("李四"));
            System.out.println(client.getShort((short)10));

        } catch (TTransportException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

最后运行效果:

至此,简单的thrift服务发布和调用已实现,有不合理之处请小伙伴指点出来,thank you!

时间: 2024-11-05 09:42:16

Apache thrift 安装及使用的相关文章

RPC的应用:Apache thrift的ubuntu 14.04的安装与应用

项目使用了一种RPC技术,开源Apache thrift,到底RPC是什么,有什么用途,下面进行了最容易理解的总结. 一 RPC的使用场景,原理和使用方法 1.什么是RPC RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像 LPC(本地过程调用). 越底层,代码越复杂.灵活性越高.效率越高:越上层,抽象封装的越好.代码越简单.效率越差.Socket和RPC的区别再次

Apache Thrift 在Windows下的安装与开发

Windows下安装Thrift框架的教程很多.本文的不同之处在于,不借助Cygwin或者MinGW,只用VS2010,和Thrift官网下载的源文件,安装Thrift并使用. 先从官网 下载这两个文件: · thrift-0.9.1.tar.gz · Thrift compiler for Windows (thrift-0.9.1.exe) 第一个文件是源代码包,第二个可执行文件用于在Windows下生成目标语言的桩代码. 除此以外,还需要boost库和libevent库. 安装Thrift

Apache Thrift with Java Quickstart(thrift入门及Java实例)

thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的.高效的服务. 1. 概述 Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器.thrift允许你定义一个

Thrift安装介绍

一.简介 1.语言库要求 因为thrift支持多语言.所以编译thrift源代码的过程中,会用到该语言的一些类库.如c++的boost.java的jdk等. 那么,在安装thrift过程中,须要对各种语言安装哪些类库和工具呢,官方对此有具体的介绍: 所需语言库和工具 C++ :Boost 1.33.1+ (必选),libevent (可选,用来创建非堵塞server) ,zlib (可选) Java :Java 1.5+ (必选),Apache Ant (必选),Apache Ivy(必选),A

Thrift安装手册

本篇是Thrift官网安装文档的翻译,原地址点击这里.Thrift之前是不支持Windows的.但是似乎0.9版本以后已经支持Window了.介绍了Thrift安装的环境要求以及在centos,Debian/Ubuntu,OS X和Windows下的安装过程.并提出了一些安装过程中可能遇到的问题和解决办法.适用于thrift0.9版本. 1 Thrift的环境要求 Apache的Thrift的编译器为支持可移植由C++语言编写而成.但在安装到某些系统中时要求有一定的环境要求.在下面的指南中选择你

Apache Thrift的简单使用

Apache Thrift的简单使用 ---------------------- 1. 简介 Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架.它有一个代码生成器来对它所定义的IDL定义文件自己主动生成服务代码框架.用户仅仅要在其之前进行二次开发即可,对于底层的RPC通讯等都是透明的.眼下它支持的语言有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCam

Apache Thrift学习之二(基础及原理)

Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部署,并且针对不同的传输协议和服务类型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用 Thrift 需要注意的事项. 前言: 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中

ubuntu下针对php的thrift 安装折腾记录

此安装针对php开发配置 按照官方的文档做法,会出现各种bug,总结正确的安装方法: STEP1: 安装必要的依赖插件: sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev sudo apt-get install php5-dev php5-cli ph

thrift 安装 make 失败 ar: .libs/ThriftTest_constants.o: No such file or directory

$wget http://mirrors.cnnic.cn/apache/thrift/0.9.1/thrift-0.9.1.tar.gz $tar zxvf thrift-0.9.1.tar.gz $cd thrift-0.9.1 $./configure $make /bin/bash ../../libtool --tag=CXX --mode=link g++ -Wall -g -O2 -L/usr/lib -o libtestgencpp.la ThriftTest_constants