Thrift交流(一)简单的Thrift
2017-07-05 15:34
113 查看
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文件如下
[java]
view plain
copy
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
[html]
view plain
copy
<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>
[html]
view plain
copy
编写ThriftService的实现类:
代码如下:
[java]
view plain
copy
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)编写服务器及测试
[java]
view plain
copy
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();
}
}
}
测试启动:
编写测试类:
[java]
view plain
copy
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
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文件如下
[java]
view plain
copy
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
[html]
view plain
copy
<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>
[html]
view plain
copy
编写ThriftService的实现类:
代码如下:
[java]
view plain
copy
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)编写服务器及测试
[java]
view plain
copy
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();
}
}
}
测试启动:
编写测试类:
[java]
view plain
copy
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
相关文章推荐
- Thrift交流(一)简单的Thrift
- Thrift交流(一)简单的Thrift
- Thrift交流(一)简单的Thrift
- Thrift使用入门(2) - 用Thrift实现一个简单的Server/Client应用程序
- Thrift使用入门(2) - 用Thrift实现一个简单的Server/Client应用程序
- Thrift初探:简单实现C#通讯服务程序
- Thrift初探:简单实现C#通讯服务程序
- Thrift的安装和简单使用
- LinuxC/C++编程基础(31) 使用thrift/rpc开发简单实例(续3)
- LinuxC/C++编程基础(23) 使用thrift/rpc开发简单实例(续1)
- 从现在开始学习一下在 Office 平台上进行开发一些简单的应用程序,欢迎有从事这方面的高手和同道指点交流。
- python 通过thrift 简单操作hbase
- Apache Thrift的简单使用
- LinuxC/C++编程基础(32) 使用thrift/rpc开发简单实例(续4)
- 实践与交流:无光驱、无光盘成功安装Windows Vista /Server 2008 /Windows 7的简单方法
- 实践与交流:将品牌机预装的 Windows 7 家庭版升级为 Windows 7 旗舰版的超级简单方法
- socket编程的最简单实例 - linux系统编程及驱动开发 - 小超嵌入式工作室 嵌入式开发学习交流论坛 XC-STC XC2440技术支持 - Powered by Discuz!
- Apache Thrift 一个入门简单示例
- Apache Thrift的简单使用