当前位置: 首页 > news >正文

thrift的简单使用

写在前面

本文一起看下一种由facebook出品的rpc框架thrift。

源码 。

1:开发步骤

1:编写thrift idl文件
2:根据thrift idl文件生成java模板代码
3:继承模板代码的*.Iface接口给出server的具体服务实现
4:使用模板的HelloWorldService.Processor编写server端
5:使用HelloWorldService.Client编写服务端调用程序

2:实战

  • 准备编译生成器
    这里 。

  • idea准备插件
    在这里插入图片描述

无该步骤也可以

  • 编写idl
    hello.thrift:
service HelloWorldService {string say(1: string username)
}
  • 通过生成器生成模板文件
$ ./thrift-0.19.0.exe -gen java hello.thrift

在这里插入图片描述

生成的模板Java文件很长,主要关注如下几个类即可:

Iface:服务端通过实现此接口提供同步服务
AsyncIface:服务端通过实现此接口提供异步服务
Client:客户端通过此类的实例对象以同步的方式访问服务端
AysyncClient:客户端通过此类的是实例以异步的方式访问服务端

将生成的代码拷贝到项目,备用。

  • pom
<dependency><groupId>org.apache.thrift</groupId><artifactId>libthrift</artifactId><version>0.19.0</version>
</dependency>
  • service实现类
public class HelloWorldServiceImpl implements HelloWorldService.Iface {@Overridepublic String say(String username) throws TException {return "Hello " + username;}
}
  • server类
public class SimpleServer {public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(ServerConfig.SERVER_PORT);TServerSocket serverTransport = new TServerSocket(serverSocket);HelloWorldService.Processor processor =new HelloWorldService.Processor<HelloWorldService.Iface>(new HelloWorldServiceImpl());TBinaryProtocol.Factory protocolFactory = new TBinaryProtocol.Factory();TSimpleServer.Args tArgs = new TSimpleServer.Args(serverTransport);tArgs.processor(processor);tArgs.protocolFactory(protocolFactory);// 简单的单线程服务模型 一般用于测试TServer tServer = new TSimpleServer(tArgs);System.out.println("Running Simple Server");tServer.serve();}
}

启动。

  • client类
public class SimpleClient {public static void main(String[] args) {TTransport transport = null;try {transport = new TSocket(ServerConfig.SERVER_IP, ServerConfig.SERVER_PORT, ServerConfig.TIMEOUT);TProtocol protocol = new TBinaryProtocol(transport);HelloWorldService.Client client = new HelloWorldService.Client(protocol);transport.open();String result = client.say("Leo");System.out.println("Result =: " + result);} catch (TException e) {e.printStackTrace();} finally {if (null != transport) {transport.close();}}}
}

运行:

Result =: Hello LeoProcess finished with exit code 0

酱!!!

写在后面

参考文章列表

Apache Thrift系列详解(一) - 概述与入门 。

http://www.lryc.cn/news/170087.html

相关文章:

  • Python实现猎人猎物优化算法(HPO)优化随机森林分类模型(RandomForestClassifier算法)项目实战
  • 2023年7月京东平板电脑行业品牌销售排行榜(京东销售数据分析)
  • HTML显示中文空格字符,emsp;一个中文字符,ensp;半个中文字符
  • Python基础指令(上)
  • Python之FastAPI返回音视频流
  • 文件名批量重命名与翻译的实用指南
  • 上海长宁来福士P2.5直径4米无边圆形屏圆饼屏圆面屏圆盘屏平面圆屏异形创意LED显示屏案例
  • Linux 企业级夜莺监控分析工具远程访问
  • react使用内联css样式的注意点
  • 优先队列PriorityQueue源码解析
  • 前端开发中常见的跨域问题及解决方案
  • (超详解)堆排序+(图解)
  • Hadoop的YARN高可用
  • C++内存检查
  • 防火墙概述及实战
  • nginx代理故障总结
  • python爬虫爬取电影数据并做可视化
  • 哈希及哈希表的实现
  • CLIP 基础模型:从自然语言监督中学习可转移的视觉模型
  • 解读性能指标TP50、TP90、TP99、TP999
  • 【无标题】mysql 截取两个,之间字符串
  • 全局的键盘监听事件
  • Qt自定义QSlider(支持水平垂直)
  • 会话控制学习
  • dweb-browser阅读
  • ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段
  • 2、ARM处理器概论
  • 【Python】福利彩票复式模拟选号程序
  • Pytorch 机器学习专业基础知识+神经网络搭建相关知识
  • torch 和paddle 的GPU版本可以放在同一个conda环境下吗