当前位置:首页 > Java

java如何调用thrift

2026-03-21 23:38:15Java

Java 调用 Thrift 的基本流程

Thrift 是一个跨语言的 RPC 框架,Java 调用 Thrift 需要先定义接口文件,生成代码,再实现服务端和客户端。

定义 Thrift 接口文件

创建 .thrift 文件,定义接口和数据结构。例如 example.thrift

namespace java com.example.thrift

service HelloService {
    string sayHello(1:string name)
}

生成 Java 代码

使用 Thrift 编译器生成 Java 代码:

thrift --gen java example.thrift

生成的代码会包含客户端和服务端的接口定义。

实现服务端

创建服务端实现类:

public class HelloServiceImpl implements HelloService.Iface {
    @Override
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

启动服务端:

public class Server {
    public static void main(String[] args) {
        try {
            TServerTransport serverTransport = new TServerSocket(9090);
            HelloService.Processor<HelloServiceImpl> processor = 
                new HelloService.Processor<>(new HelloServiceImpl());
            TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
            server.serve();
        } catch (TTransportException e) {
            e.printStackTrace();
        }
    }
}

实现客户端

创建客户端调用代码:

public class Client {
    public static void main(String[] args) {
        try {
            TTransport transport = new TSocket("localhost", 9090);
            transport.open();
            TProtocol protocol = new TBinaryProtocol(transport);
            HelloService.Client client = new HelloService.Client(protocol);
            System.out.println(client.sayHello("World"));
            transport.close();
        } catch (TException e) {
            e.printStackTrace();
        }
    }
}

使用 Maven 管理依赖

pom.xml 中添加 Thrift 依赖:

<dependency>
    <groupId>org.apache.thrift</groupId>
    <artifactId>libthrift</artifactId>
    <version>0.16.0</version>
</dependency>

高级配置

可以使用 TNonblockingServerTHsHaServer 提高性能:

java如何调用thrift

TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(9090);
HelloService.Processor<HelloServiceImpl> processor = new HelloService.Processor<>(new HelloServiceImpl());
TServer server = new TNonblockingServer(new Args(serverTransport).processor(processor));
server.serve();

注意事项

确保客户端和服务端使用的协议一致(如 TBinaryProtocol)。如果跨语言调用,需确保接口定义在各语言中兼容。

标签: javathrift
分享给朋友:

相关文章

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

如何成为java架构师

如何成为java架构师

掌握扎实的Java基础 深入理解Java核心知识,包括多线程、集合框架、JVM原理、设计模式等。熟悉Java生态中的常用框架如Spring、MyBatis、Hibernate等,并能分析其源码实现。…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…