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是一种开源的跨语言服务开发框架,由Facebook于2007年开发并开源,后来成为Apache基金会的顶级项目。它的主要目的是提供一个高效、轻量级的框架,用于构建可扩展的服务,使得不同编程语言之间能够进行无缝通信...
同时,Thrift还具有良好的扩展性,可以方便地添加新的服务和数据类型,使得Delphi开发的系统能够无缝地与其他语言的系统进行交互。 总之,Thrift Delphi实例是一个极好的学习资源,它揭示了跨语言服务通信的核心...
`tech_thrift.rar`可能是一个包含具体Thrift服务开发实例的压缩包,包含了一些示例代码和项目配置。 `apache-ant-1.9.6-bin.zip`是Apache Ant,一个Java的构建工具,用于自动化构建Thrift项目和执行编译任务。 `...
在IT行业中,Thrift是一种高性能、可扩展的跨语言服务开发框架,由Facebook开源,用于构建分布式服务。它通过定义一种中间表示(IDL,接口定义语言)来描述服务,然后自动生成不同编程语言的代码,使得不同语言之间...
在实际开发中,你可能还需要处理一些额外的细节,比如错误处理、连接管理和性能优化。例如,你可以使用Qt的信号和槽机制来处理服务调用的结果,或者使用QCache来缓存服务对象以提高效率。 总的来说,“C++(Qt)下...
在这个"基于thrift开发的客户端和服务端"的示例中,我们将深入理解如何使用Thrift来构建跨平台的服务通信。 首先,Thrift通过定义一个接口描述语言(IDL)来创建服务接口。这个文件通常以`.thrift`为扩展名,它包含...
Thrift通过定义一种中间表示(IDL,Interface Definition Language)来描述服务接口,然后自动生成相应的客户端和服务器端代码,简化了多语言服务开发的复杂性。 Thrift的核心概念是服务接口,它定义了服务提供的...
在本实例中,我们将关注一个基于Thrift的RPC调用实现,Thrift是由Facebook开发的一种高效的跨语言服务开发框架。 Thrift的核心思想是定义一种中间描述文件(.thrift),该文件包含了服务接口、数据结构以及服务间的...
thrift属于facebook.com技术核心框架之一,使用不同开发语言开发的系统可以通过该框架实现彼此间的通讯,开发者只需编辑一份thrift脚本,即可自动获得其它开发语言的代码(比如 c++ java python ruby c# haskell ...
Thrift是一种高性能、跨语言的服务框架,由Facebook于2007年开发并开源,它允许程序员在不同的编程语言之间创建可伸缩的、高效的、跨平台的服务。在这个实例程序中,我们将深入探讨Thrift的工作原理,以及如何通过它...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年设计并开源,后来成为Apache软件基金会的顶级项目。它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,允许开发者在不同的...
Thrift是由Facebook开发的一种开源跨语言服务开发框架。它的主要目标是提供一种高效、可扩展的方法来构建分布式应用程序。Thrift通过定义服务接口和数据结构,生成相应的代码,使得开发者可以在多种编程语言之间轻松...
这个"thrift-Demo"应该是一个演示如何使用Thrift的实例,包含了一系列的步骤和文件,帮助初学者理解Thrift的工作原理和使用方法。 在Thrift中,我们首先需要创建一个`.thrift`文件,这个文件定义了服务的接口和数据...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开源,现由Apache基金会维护。它允许开发者定义服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以进行高效、可靠的RPC(远程过程调用)...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年创建,现在是Apache软件基金会的项目。它的主要目标是通过定义一种中间语言(IDL,Interface Definition Language)来简化不同编程语言之间的通信,使得...
这种跨语言的能力使得开发多语言服务变得简单,同时Thrift还提供了一种轻量级的二进制协议,确保了通信效率。 二、Thrift IDL Thrift接口定义语言(IDL)是一种简单的结构化语言,用于定义服务、数据结构和常量。...
通过深入理解和实战应用,我们可以充分利用Thrift解决实际开发中的通信难题,提升系统的整体性能和可维护性。在实际项目中,如ThriftMvnProject所示,将Thrift集成到Maven项目中,能够简化开发流程,方便管理和升级...
**Laravel 开发与 Thrift Laravel** 在现代Web开发中,Laravel是一个广泛使用的PHP框架,以其优雅的语法和强大的功能赢得了开发者们的喜爱。而Thrift则是一个跨语言的服务开发框架,由Facebook开源,用于构建可伸缩...
在软件开发中,Thrift是一种高效的跨语言服务开发框架,由Facebook开发并开源。它允许定义数据类型和服务接口,然后自动生成各种编程语言的代码,使得不同语言的系统之间可以进行无缝通信。Maven作为Java项目管理...