Thrift示例
http://blog.zhengdong.me/2012/05/10/hello-world-by-thrift-using-java/
demo.thrift 檔案內容如下
namespace java com.vv.test
struct Item {
1: i64 id,
2: string content,
}
service CrawlingService {
void write(1:list<Item> items),
}
使用命令自動生成檔案
F:\>thrift-0.10.0.exe --gen java demo.thrift
然後複製到專案
然後編寫樣例程式碼
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.thrift.TException;
- import org.apache.thrift.protocol.TBinaryProtocol;
- import org.apache.thrift.protocol.TProtocol;
- import org.apache.thrift.server.TServer;
- import org.apache.thrift.server.TThreadPoolServer;
- import org.apache.thrift.transport.TServerSocket;
- import org.apache.thrift.transport.TSocket;
- import org.apache.thrift.transport.TTransport;
- import org.apache.thrift.transport.TTransportException;
- import com.vv.test.CrawlingService;
- import com.vv.test.Item;
- public class T {
- public static void main(String[] args) throws InterruptedException {
- new Thread(new Server()).start();
- Thread.sleep(1000);
- Client client = new Client();
- List<Item> list = new ArrayList<Item>();
- for (int i = 1; i <= 10; i++) {
- Item item = new Item();
- item.setId(i);
- item.setContent("hello world " + i);
- list.add(item);
- }
- client.write(list);
- }
- }
- class Server implements Runnable {
- @Override
- public void run() {
- try {
- // Set port
- TServerSocket serverTransport = new TServerSocket(9090);
- // Set CrawlingHandler we defined before
- // to processor, which handles RPC calls
- // Remember, one service per server
- CrawlingHandler handler = new CrawlingHandler();
- CrawlingService.Processor<CrawlingService.Iface> processor = new CrawlingService.Processor<CrawlingService.Iface>(
- handler);
- TServer server = new TThreadPoolServer(new TThreadPoolServer.Args(serverTransport).processor(processor));
- System.out.println("Starting server on port 9090 ...");
- server.serve();
- } catch (TTransportException e) {
- e.printStackTrace();
- }
- }
- }
- class Client {
- public void write(List<Item> items) {
- TTransport transport;
- try {
- transport = new TSocket("localhost", 9090);
- transport.open();
- TProtocol protocol = new TBinaryProtocol(transport);
- CrawlingService.Client client = new CrawlingService.Client(protocol);
- client.write(items);
- transport.close();
- } catch (TTransportException e) {
- e.printStackTrace();
- } catch (TException e) {
- e.printStackTrace();
- }
- }
- }
- class CrawlingHandler implements CrawlingService.Iface {
- @Override
- public void write(List<Item> items) throws TException {
- for (Item item : items) {
- System.out.println(item);
- }
- };
- }
執行結果如下:
但是輸出的最後一行顯示"Received 1" ,這個輸出是從哪裡來的?以後慢慢再看吧.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2135577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Thrift RPC 系列教程(1)——Thrift語言RPC
- Thrift 和 Protobuf
- thrift with Go (0.11.0)Go
- Mac 安裝thriftMac
- Thrift RPC Client 流程RPCclient
- Thrift RPC新增access logRPC
- ubuntu下安裝thriftUbuntu
- Thrift IDL 快速入門
- Thrift RPC 通訊搭建RPC
- JMeter 測試 thrift RPC 介面JMeterRPC
- Thrift的網路堆疊
- 如何使用thrift 服務引擎元件元件
- Thrift原理分析(一)基本概念
- Spring Boot 中使用 thrift 入門Spring Boot
- RPC框架實踐之:Apache ThriftRPC框架Apache
- windows下編譯安裝thriftWindows編譯
- thrift使用過程中的問題
- thrift原始碼分析-架構設計原始碼架構
- Thrift RPC 系列教程(3)——模組化RPC
- Apache Thrift 配置環境和執行(Linux)ApacheLinux
- Thrift server端的幾種工作模式分析Server模式
- Spring Cloud整合Thrift RPC(二) - 應用案例SpringCloudRPC
- Spring Cloud整合Thrift RPC(一) - 使用指南SpringCloudRPC
- CSharp使用Thrift作為RPC框架入門(一)CSharpRPC框架
- 效能工具之Jmeter壓測Thrift RPC服務JMeterRPC
- Thrift原理分析(二)協議和編解碼協議
- 手把手教你通過Thrift訪問ApsaraDBforHBase
- dubbo原始碼解析(三十二)遠端呼叫——thrift協議原始碼協議
- C#使用Thrift作為RPC框架實戰(四)之TSocketC#RPC框架
- Thrift RPC 系列教程(5)—— 介面設計篇:struct & enum設計RPCStruct
- crontab 示例
- 4.5.1.2.2 示例
- pod 示例
- 一個請求過來都經過了什麼?(Thrift版)
- thrift 一個有意思的特性:Class名稱無關性
- 如何在 Istio 中支援 Dubbo、Thrift、Redis 以及任何七層協議?Redis協議
- 網路通訊協議自動轉換之thrift到http協議HTTP
- Thrift 客戶端-服務端 零XML配置 註解式配置客戶端服務端XML
- OpenAPI definition(示例)API