Thirft简单使用
安装Thrift
到thrift官网下载thrift.exe
http://thrift.apache.org/download


将thrift-0.10.0.exe复制到C:\Program Files\thrift 并改名为thrift.exe

配置环境变量

打开dos窗口输入thrift -version 查看thrift安装版本,出现下图,则成功

使用Thrift
编写thrift接口文件并生成java文件
编写thrift接口文件HelloWorld.thrift,并放在D盘aaa文件夹下
namespace java com.thrift.demo
service HelloWorldService {
string sayHello(1:string username)
}

运行命令thrift -o D:\aaaa -gen java D:\aaa\HelloWorld.thrift
说明:使用-o参数指定输出路径

在aaaa下就会生成所需要的java文件


使用由Thrift文件生成的java文件
将接口文件拷贝到自己的工程中,并导入相关jar包
Thriftjar包下载地址如下,可以修改版本号来下载与exe版本对应的jar包
http://repo1.maven.org/maven2/org/apache/thrift/libthrift/0.10.0/

编写接口实现代码
package com.thrift.demo;
import org.apache.thrift.TException;
import com.thrift.demo.HelloWorldService.Iface;
public class HelloWorldServiceImpl implements Iface{
private static int count = 0;
@Override
public String sayHello(String username) throws TException {
count += 1;
System.out.println("get " + username + " " +count);
return "hello " + username + " " + count;
}
}
编写server代码
Thrift相关jar包下载:https://github.com/xiaorenwu-dashijie/Thrift.git
package com.thrift.demo; 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.thrift.demo.HelloWorldService;
import com.thrift.demo.HelloWorldService.Processor; public class Server {
public void startServer() {
try {
System.out.println("thrift server open port 1234");
TServerSocket serverTransport = new TServerSocket(1234);
HelloWorldService.Processor process = new Processor(new HelloWorldServiceImpl());
Factory portFactory = new TBinaryProtocol.Factory(true, true);
Args args = new Args(serverTransport);
args.processor(process);
args.protocolFactory(portFactory);
TServer server = new TThreadPoolServer(args);
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
System.out.println("thrift server init");
Server server = new Server();
System.out.println("thrift server start");
server.startServer();
System.out.println("thrift server end");
}
}
编写client 代码
package com.thrift.demo; 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 com.thrift.demo.HelloWorldService; public class Client {
public void startClient() {
TTransport transport;
try {
System.out.println("thrift client connext server at 1234 port ");
transport = new TSocket("localhost", 1234);
TProtocol protocol = new TBinaryProtocol(transport);
HelloWorldService.Client client = new HelloWorldService.Client(protocol);
transport.open();
System.out.println(client.sayHello("panguso"));
transport.close();
System.out.println("thrift client close connextion");
} catch (TTransportException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
System.out.println("thrift client init ");
Client client = new Client();
System.out.println("thrift client start ");
client.startClient();
System.out.println("thrift client end ");
}
}
运行server和client代码
启动server端

启动client端

Server端输出

Thirft简单使用的更多相关文章
- 简单理解 RPC(转载)
原文地址:http://www.syyong.com/architecture/Simple-understanding-of-RPC.html RPC(Remote Procedure Call P ...
- Rpc简单入门
RPC这个概念大家都应该很熟悉了,这里不在累述了:使用场景可以参考这篇,本篇主要分享下Thrift和Grpc在.Net Core环境下使用入门.Thirft或者Grps 都支持跨语言.跨平台的Rpc框 ...
- Thirft框架介绍
1.前言 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目.Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和 ...
- 【造轮子】打造一个简单的万能Excel读写工具
大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
随机推荐
- asp.net core系列 25 EF模型配置(隐藏属性)
一. 隐藏属性概述 隐藏属性也叫影子属性,该属性不是在.net实体类中定义的属性,而是在EFCore模型中为该实体类型定义的属性.这些属性的值和状态完全在变更跟踪器中维护.它有二个功能:(1)当数据库 ...
- Python爬虫入门教程 39-100 天津市科技计划项目成果库数据抓取 scrapy
爬前叨叨 缘由 今天本来没有打算抓取这个网站的,无意中看到某个微信群有人问了一嘴这个网站,想看一下有什么特别复杂的地方,一顿操作下来,发现这个网站除了卡慢,经常自己宕机以外,好像还真没有什么特殊的.. ...
- 《HelloGitHub月刊》第 11 期
<HelloGitHub>第 11 期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 简介 最开始我只是想把自己在浏览 GitHub 过程中,发现的有意思.高 ...
- Linux系统的数据写入机制--延迟写入
我们都知道,在Linux关机的之前都会要运行一个命令那就是sync,这个命令是同步的意思,那为什么要运行这个?而且之前的数据改变我们已经看见了,为什么还要运行这个命令?要回答这个问题就要说一下Linu ...
- 深入解读阿里云数据库POLARDB核心功能物理复制技术
日志是数据库的重要组成部份,按顺序以增量的方式记录了数据库上所有的操作,日志模块的设计对于数据库的可靠性.稳定性和性能都非常重要. 可靠性方面,在有一个数据文件的基础全量备份后,对运行中的数据库来说, ...
- Docker Compose 原理
Docker 的优势非常明显,尤其是对于开发者来说,它提供了一种全新的软件发布机制.也就是说使用 docker 镜像作为软件产品的载体,使用 docker 容器提供独立的软件运行上下文环境,使用 do ...
- SpringMvc 请求中日期类型参数接收一二事儿
首先说明:以版本为Spring 4.3.0为测试对象: 开启<mvc:annotation-driven /> 测试场景一:请求中含有date属性,该类型为日期类型,SpringMvc采用 ...
- VS2017安装过程中【工作负载】选择安装
Visual Studio 2017安装和12.13.15安装过程一样的,只是17安装的时候 选择的[工作负载]不同了,小编安装17的目的是为了安装“.Net Core跨平台开发” 这个模块,当然,其 ...
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- 小tips:path的join和resolve的使用区别
1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串.要连接的多个路径可做为参数传入. path.join()方法在 ...