Thrift交流(一)简单的Thrift

Thrift是一个可伸缩的跨语言的服务开发框架,是facebook开发的一个跨语言通信平台。为各种语言提供快捷的rpc服务。现阶段已经支持C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml等语言。在近来的工作中,重新学习Thrift通信的内容,和大家做个简单的交流。

Thrift示意图



1)安装Thrift环境

Thrift的环境的安装并不复杂,我们现在以最简单的windows环境做个案例。

首先在官方网站下载最新的thrift exe文件,http://thrift.apache.org/download/

然后把exe文件改名为thrift.exe,放在了windows的目录下,如图所示:


接着配置thrift环境变量:

测试Thrift运行环境:


2)编写Thrift文件

thrift文件如下

namespace java thrift  // defines the namespace  
   
typedef i32 int  //typedefs to get convenient names for your types

service ThriftService {  
	int add(1:int a,2:int b),
}

通过命令行执行Thrift文件,并生成


3)建立Thrift工程

首先建立maven工程,把如下内容加到pom.xml

<dependency>
			<groupId>org.apache.thrift</groupId>
			<artifactId>libthrift</artifactId>
			<version>0.9.0</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.5</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
			<version>1.7.5</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.5</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>


编写ThriftService的实现类:

代码如下:

package thrift;

import org.apache.thrift.TException;

public class ThriftServiceImpl implements Iface {

	@Override
	public int add(int a, int b) throws TException {
		return a + b;
	}

}

4)编写服务器及测试

package com.duowan.yy.thriftTest;

import org.apache.thrift.TProcessor;
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 thrift.ThriftService;
import thrift.ThriftServiceImpl;

public class ThriftServer {
	public static void main(String[] args) {
		try {
			TServerSocket serverTransport = new TServerSocket(7911);

			Factory proFactory = new TBinaryProtocol.Factory();

			TProcessor processor = new ThriftService.Processor<ThriftService.Iface>(
					new ThriftServiceImpl());
			TServer.Args tArgs = new TServer.Args(serverTransport);
			tArgs.processor(processor);
			tArgs.protocolFactory(proFactory);

			TServer server = new TSimpleServer(tArgs);
			System.out.println("Start server on port 7911....");
			server.serve();
		} catch (TTransportException e) {
			e.printStackTrace();
		}
	}
}

测试启动:



编写测试类:

package com.duowan.yy.thriftTest;

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 thrift.ThriftService;


public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			TTransport transport = new TSocket("localhost", 7911);
			transport.open();
			TProtocol protocol = new TBinaryProtocol(transport);
			ThriftService.Client client = new ThriftService.Client(protocol);
			System.out.println(client.add(77, 5));
			transport.close();

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

}

  效果如下:



简单的Thrift之旅已经完成了,希望大家玩的开心。



Thrift交流(二)thrift服务端和客户端实现 Nifty http://blog.csdn.net/arjick/article/details/18364513



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值