国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Boot 中使用 thrift 入門

cnio / 3478人閱讀

摘要:簡介是什么是一個軟件框架,用來進行可擴展且跨語言的服務的開發。的功能允許定義一個簡單的定義文件中的數據類型和服務接口,以作為輸入文件,編譯器生成代碼用來方便地生成客戶端和服務器通信的無縫跨編程語言。

Thrift 簡介 Thrift 是什么

Thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 這些編程語言間無縫結合的、高效的服務。

Thrift 的功能

Thrift允許定義一個簡單的定義文件中的數據類型和服務接口,以作為輸入文件,編譯器生成代碼用來方便地生成RPC客戶端和服務器通信的無縫跨編程語言。

環境安裝

基于MAC環境,打開終端,執行如下命令:

brew install thrift

查看是否安裝成功:

thrift -version
使用示例 Maven 依賴

在服務端和客戶端的 pom.xml 中添加 Thrift 依賴(版本和安裝時保持一致):


  org.apache.thrift
  libthrift
  0.11.0
編寫服務端 Thrift 文件

hello.thrift

namespace java com.hans.thriftserver
service Hello{
    string helloString(1:string param)
}
使用 Thrift 工具生成 java 代碼
thrift -r -gen java hello.thrift

修改 namespace java com.hans.thriftclient 后再次執行則生成客戶端 java 代碼

將代碼放到對應目錄

即 com.hans.thriftserver 子目錄 thrift 下

編寫服務實現類
package com.hans.thriftserver.thrift.impl;

import com.hans.thriftserver.thrift.Hello;
import org.apache.thrift.TException;

public class HelloServiceImpl implements Hello.Iface {

    @Override
    public String helloString(String param) throws TException {
        return "hello: " + param;
    }
}
編寫服務端
package com.hans.thriftserver;

import com.hans.thriftserver.thrift.Hello;
import com.hans.thriftserver.thrift.impl.HelloServiceImpl;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author huangxun
 */
@SpringBootApplication
public class ThriftServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ThriftServerApplication.class, args);

        try {
            System.out.println("服務端開啟....");
            TProcessor tprocessor = new Hello.Processor(new HelloServiceImpl());
            // 簡單的單線程服務模型
            TServerSocket serverTransport = new TServerSocket(9898);
            TServer.Args tArgs = new TServer.Args(serverTransport);
            tArgs.processor(tprocessor);
            tArgs.protocolFactory(new TBinaryProtocol.Factory());
            TServer server = new TSimpleServer(tArgs);
            server.serve();
        } catch (TTransportException e) {
            e.printStackTrace();
        }
    }
}
編寫客戶端
package com.hans.thriftclient;

import com.hans.thriftclient.thrift.Hello;
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 org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author huangxun
 */
@SpringBootApplication
public class ThriftClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ThriftClientApplication.class, args);

        System.out.println("客戶端啟動....");
        TTransport transport = null;
        try {
            transport = new TSocket("localhost", 9898, 30000);
            // 協議要和服務端一致
            TProtocol protocol = new TBinaryProtocol(transport);
            Hello.Client client = new Hello.Client(protocol);
            transport.open();
            String result = client.helloString("hans");
            System.out.println(result);
        } catch (TTransportException e) {
            e.printStackTrace();
        } catch (TException e) {
            e.printStackTrace();
        } finally {
            if (null != transport) {
                transport.close();
            }
        }
    }
}
啟動服務端

后臺打印輸出:

服務端開啟....
執行客戶端

后臺打印輸出:

客戶端啟動....
hello: hans
Github 完整代碼

https://github.com/hxun123/sp...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69491.html

相關文章

  • Spring Boot應用監控實戰

    摘要:概述之前講過容器的可視化監控,即監控容器的運行情況,包括使用率內存占用網絡狀況以及磁盤空間等等一系列信息。實戰一下中添加依賴啟動應用程序之后,只要在瀏覽器中輸入端點信息就能獲得應用的一些狀態信息。 showImg(https://segmentfault.com/img/remote/1460000014684947); 概述 之前講過Docker容器的可視化監控,即監控容器的運行情...

    mtunique 評論0 收藏0
  • SpringBoot應用Docker化

    摘要:微服務的基本思想在于考慮圍繞著業務領域組件來創建應用,這些應用可獨立地進行開發管理和加速。在分散的組件中使用微服務云架構和平臺,使部署管理和服務功能交付變得更加簡單。 showImg(https://segmentfault.com/img/remote/1460000014332184); 概述 當下web服務端開發中最火的名詞中絕對有微服務的一席之地,其也成為當下互聯網后端服務架...

    U2FsdGVkX1x 評論0 收藏0
  • RPC框架實踐之:Apache Thrift

    摘要:在文章微服務調用鏈追蹤中心搭建一文中模擬出來的調用鏈就是一個遠程調用的例子,只不過這篇文章里是通過這種同步調用方式,利用的是協議在應用層完成的,這種方法雖然奏效,但有時效率并不高。 showImg(https://segmentfault.com/img/remote/1460000014858219); 一、概述 RPC(Remote Procedure Call)即 遠程過程調...

    Gilbertat 評論0 收藏0
  • RPC框架實踐之:Apache Thrift

    摘要:在文章微服務調用鏈追蹤中心搭建一文中模擬出來的調用鏈就是一個遠程調用的例子,只不過這篇文章里是通過這種同步調用方式,利用的是協議在應用層完成的,這種方法雖然奏效,但有時效率并不高。 showImg(https://segmentfault.com/img/remote/1460000014858219); 一、概述 RPC(Remote Procedure Call)即 遠程過程調...

    keithxiaoy 評論0 收藏0
  • Spring Boot Admin 2.0開箱體驗

    摘要:概述在我之前的應用監控實戰一文中,講述了如何利用版本來可視化地監控應用。接下來我們就來創建一個待監控的示例。 showImg(https://segmentfault.com/img/remote/1460000015671446); 概述 在我之前的 《Spring Boot應用監控實戰》 一文中,講述了如何利用 Spring Boot Admin 1.5.X 版本來可視化地監控 ...

    CastlePeaK 評論0 收藏0

發表評論

0條評論

cnio

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<