Thrift开发实例
准备工作
Thrift主页:http://thrift.apache.org/
Thrift下载:http://thrift.apache.org/download/
下载thrift-0.8.0.tar.gz和Thrift compiler for Windows (thrift-0.8.0.exe)
创建工作区../thrift;
将thrift-0.8.0.tar.gz和thrift-0.8.0.exe拷贝到../thrift下;
将thrift-0.8.0.tar.gz解压到当前目录;
创建start.bat,编辑其内容为:
cd
thrift-0.8.0 --gen java *.thrift
pause
|
简单实例
创建thrift脚本文件:
namespace java com.test.rpc
service TestService{
string getUserName(1:i64 id)
}
|
执行start.bat,thrift会根据脚本生成java代码../thrift/gen-java/com/test/rpc/ TestService.java;
创建java project;
创建package:com.test.rpc,将生成的TestService.java拷入;
创建接口实现类TestImpl
package com.test.rpc;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import com.test.rpc.TestService.Iface;
import com.test.user.IUserService;
import com.test.user.UserServiceImpl;
public class TestImpl implements Iface {
private static final Logger LOG = Logger.getLogger(TestImpl.class);
@Override
public String getUserName(long id) throws TException {
LOG.info("TestImpl server get rpc msg :"+id);
IUserService userService = new UserServiceImpl();
String username = userService.getUser(id);
return username;
}
}
|
创建RPC server启动线程
package com.test.rpc;
import javax.xml.ws.Endpoint;
import org.apache.log4j.Logger;
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.TThreadPoolServer;
import org.apache.thrift.server.TThreadPoolServer.Args;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
import com.test.service.CommonService;
public class TestServer extends Thread {
private static final Logger LOG = Logger.getLogger(TestServer.class);
@Override
public void run() {
try {
TestImpl testimpl = new TestImpl();
TServerSocket serverTransport = new TServerSocket(7911);
Factory proFactory = new TBinaryProtocol.Factory();
TProcessor processor = new TestService.Processor<TestImpl>(testimpl);
Args rpcArgs = new Args(serverTransport);
rpcArgs.processor(processor);
rpcArgs.protocolFactory(proFactory);
TServer server = new TThreadPoolServer(rpcArgs);
LOG.info("Start TestService on port 7911..." + Thread.currentThread().getId() + "["
+ Thread.currentThread().getName() + "]");
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
LOG.info("TestService.simpleRun", e);
}
}
/**
* @param args
*/
public static void main(String[] args) {
TestServer server = new TestServer();
server.start();
}
}
|
复杂对象实例
与简单实例基本相同,只是脚本不同,参数以对象方式传递,自动生成的java类多一些;
创建thrift脚本文件:
namespace java com.test.rpc
struct User {
1: i64 id
2: string name
}
service TestService{
User getUser(1:i64 id)
}
|
执行start.bat,thrift会根据脚本生成java代码../thrift/gen-java/com/test/rpc/目录下TestService.java、User.Java;
创建java project;
创建package:com.test.rpc,将生成的TestService.java、User.Java拷入;
其他步骤类同上例;
客户端代码
package com.test.rpc;
import org.apache.log4j.Logger;
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.TTransportException;
import com.test.rpc.TestService.Client;
public class TestClient {
private static final Logger LOG = Logger.getLogger(TestClient.class);
public static void main(String[] args){
try{
TSocket tsocket = new TSocket("localhost", 7911);
tsocket.open();
TProtocol protocol = new TBinaryProtocol(tsocket);
Client client = new Client(protocol);
User user = client.getUser(id);
LOG.info(user.getName());
}catch (Exception e) {
LOG.error(e.getMessage(), e);
}
}
}
|
分享到:
相关推荐
thrift样例操作实例,附带开发文档及所需要的jar包,还有开发的工程代码,
thrift属于facebook.com技术核心框架之一,使用不同开发语言开发的系统可以通过该框架实现彼此间的通讯,开发者只需编辑一份thrift脚本,即可自动获得其它开发语言的代码(比如 c++ java python ruby c# haskell ...
使用Apache thrift通信框架编写的一个实例,以及提供开发中使用thrift所需的jar包
1.为什么要用thrift js C#? 1.1 首先,js 通过 thrift 访问C#,实际上是一种c/s模式。... 1.3 js直接与thrift server通信,可以提高性能,并且用C#开发server,开发效率也非常高。(那些web servic
thrift使用的一个简单的例子,有助于初学者对thrift的理解和使用。
Thrift是一款由Fackbook开发的可伸缩、跨语言的服务开发框架,该框架已经开源并且加入的Apache项目。Thrift主要功能是:通过自定义的Interface Definition Language(IDL),可以创建基于RPC的客户端和服务端的服务...
Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。接下来通过本文给大家介绍Java thrift服务器和客户端创建实例代码,需要的朋友参考下吧
使用Apache Thrift的简单聊天服务 #由...制作: 约书亚(Joshua Bezaleel)Abednego(13512013) 穆罕默德·雷扎(Muhammad Reza Irvanda)(13512042) #Requires Java开发工具包1.8 #安装说明 打开您的IDE...
DMS是一个集中式的中间件框架,每一个小型中间件将会是完全独立的,都将以注册方式使用,主要为了快速开发项目而准备,如:DMS.Autofac,DMS.Consul,DMS.RabbitMQg,DMS.Swagger,GRPC,Thrift,Netty,DMS....
18_Apache Thrift应用详解与实例剖析 19_Apache Thrift原理与架构解析 20_通过Apache Thrift实现Java与Python的RPC调用 21_gRPC深入详解 22_gRPC实践 23_Gradle Wrapper在Gradle项目构建中的最佳实践 24_gRPC整合...
14_Protobuf完整实例详解 15_Protobuf集成Netty与多协议消息传 递 16_Protobuf多协议消息支援与工程最佳实践 17_Protobuf使用最佳实践与Apache Thrift介绍 18_Apache Thrift应用详解与实例剖析 19_Apache Thrift原理...
本文实例讲述了PHP程序员简单的开展服务治理架构操作。分享给大家供大家参考,具体如下: 服务治理 治理的绝笔是服务,在一家公司...thrift其实是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大
第18讲:Apache Thrift应用详解与实例剖析 第19讲:Apache Thrift原理与架构解析 第20讲:通过Apache Thrift实现Java与Python的RPC调用 第21讲:gRPC深入详解 第22讲:gRPC实践 第23讲:Gradle Wrapper在Gradle...
基于hadoop的Hive数据仓库JavaAPI简单调用的实例,关于Hive的简介在此不赘述。hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI CLI,即Shell命令行 JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似 Web...
"Supervisor Process"和"WebServer"通过"THRIFT/REST"接⼝与WebServer上的应⽤进⾏交 互,如图所⽰。 Loader 实现FusionInsight HD与关系型数据库、⽂件系统之间交换数据和⽂件的数据加载⼯具;同时也可以将数据从...
2.4.2 Avro,REST,以及Thrift 2.5 示例 2.5.1 模式 2.5.2 加载数据 2.5.3 Web查询 2.6 HBase和RDBMS的比较 2.6.1 成功的服务 2.6.2 HBase 2.6.3 实例:HBase在Streamy.com的使用 2.7 Praxis 2.7.1 版本 2.7.2 HDFS ...
2.4.2 Avro,REST,以及Thrift 2.5 示例 2.5.1 模式 2.5.2 加载数据 2.5.3 Web查询 2.6 HBase和RDBMS的比较 2.6.1 成功的服务 2.6.2 HBase 2.6.3 实例:HBase在Streamy.com的使用 2.7 Praxis ...