thrift系列 - 快速入门
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_test
- service 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.
thrift系列 - 快速入门的更多相关文章
- [转]thrift系列 - 快速入门
原文: http://blog.csdn.net/hrn1216/article/details/51274934 thrift 介绍,入门例子. thrift 是一个RPC框架,实现跨语言 ---- ...
- 懂一点Python系列——快速入门
本文面相有 一定编程基础 的朋友学习,所以略过了 环境安装.IDE 搭建 等一系列简单繁琐的事情. 一.Python 简介 Python 英文原意为 "蟒蛇",直到 1989 年荷 ...
- Thrift框架快速入门
Thrift介绍1.什么是thrift?thrift早期由facebook内部团队开发,主要用于实现跨语言间的方法调用,属于远程方法调用的一种,后开源纳入apache中,成为了apache thrif ...
- Elasticsearch快速入门案例
写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...
- [你必须知道的NOSQL系列]专题二:Redis快速入门
一.前言 在前一篇博文介绍了MongoDB基本操作,本来打算这篇博文继续介绍MongoDB的相关内容的,例如索引,主从备份等内容的,但是发现这些内容都可以通过官方文档都可以看到,并且都非常详细,所以这 ...
- [你必须知道的NOSQL系列]专题一:MongoDB快速入门
一.前言 现在越来越多的公司开始采用非关系数据库了,并且很多公司的面试都要求面试者有MongoDB的使用经验,至于非关系数据库与关系型数据库之间的区别大家可以自行百度.但是作为程序员的我们,既然大部分 ...
- 快速入门系列--WebAPI--01基础
ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...
- 快速入门系列--WebAPI--03框架你值得拥有
接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5.单页应用程序SPA等技术和理念很好的结合在一起.所谓ASP.NET WebAPI ...
- 快速入门系列--WebAPI--04在老版本MVC4下的调整
WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了.在之前的介绍中,基本上都基于.NET 4.5之后版本,其System.N ...
随机推荐
- swap文件查看
建议 Swap 使用单独的分区: a swap file a combination of swap partitions and swap files. Swap 大小的计算公式: M 等于物理内存 ...
- 浅谈BFC和IFC
先说说FC,FC的含义就是Fomatting Context.它是CSS2.1规范中的一个概念. 它是页面中的一块渲染区域.而且有一套渲染规则,它决定了其子元素将怎样定位.以及和其它元素的关系和相互作 ...
- java ffmpeg视频转码(自测通过)
import java.io.*; public class VideoTransfer { //ffmepg文件 安装目录 private static String ffmpeg = " ...
- 使用jQuery实现图片懒加载原理
原文:https://www.liaoxuefeng.com/article/00151045553343934ba3bb4ed684623b1bf00488231d88d000 在网页中,常常需要用 ...
- 【工具类】怎么进入阿里云docker仓库
进入阿里云docker仓库. 1.进入官网 2.选择 开发者 --->点击 阿里开源项目 3.选择 服务 点击代码托管.仓库 下的 容器镜像服务 4.点击进入 管理控制台 5.点击镜像搜索, ...
- 一文犀利看懂中美贸易战 z
如今的中国面对着前所未有的经济全球化的大环境.面对着如何成为创新性国家的重任. 钛媒体注:美国东部时间 7 月 6 日凌晨0:01 分,美国正式开始对 340 亿美元的中国产品加征 25% 的关税,这 ...
- 黑镜第一至二季/全集Black Mirror迅雷下载
本季第一.二季 Black Mirror (2011-2013)看点:<黑镜>(Black Mirror)是一部由查理·布洛克主创.英国电视4台(Channel 4)于2011年12月播出 ...
- 详细解读Volley(四)—— 自定义Request
Volley中提供了几个Request,如果我们有特殊的需求,完全可以自定义Request的,自定义Request自然要继承Request,那么本篇就教大家来一步一步地定义一个自己的Request类. ...
- 简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码
简单绕过Chrome密码查看逻辑,查看浏览器已保存的密码 利用场景: 同事或朋友外出有事,电脑未锁屏离开座位.可以利用这一间隙,查看Ta在Chrome浏览器上保存的账号密码 查看逻辑: 当我们要查 ...
- dict扩展munch,支持yaml文件
安装:pip install munch 用法参考:https://github.com/Infinidat/munch Munch is a dictionary that supports att ...