Python 作为服务端,Java 作为客户端调用 Python 提供的接口。本文主要按照这篇文章的思路连通 Python 与 Java,下面简单介绍一下如何使用,具体可参看原文章。最后重点提供一个 Java 的通用工厂方法,用来调用 Thrift 提供的接口。
生成文件
首先定义thrift
接口文件,hello.thrift
:1
2
3
4
5service Hello {
string helloString(1:string word)
}
生成 Python 代码:1
thrift --gen py hello.thrift
生成 Java 代码:1
thrift --gen java hello.thrift
生成完的文件要各自放到 Python 和 Java 的工程中。
Python 客户端
1 | from hello import Hello |
Java 通用工厂方法
提供一个工厂类,不管 Thrift 文件怎么变化,核心调用代码都不需要变,只需要替换生成的代码即可。Thrift 的 ip 地址和端口一般写在配置文件中,由于各人读取配置文件的方法不尽相同,这里就写死在代码里,使用时换成从配置文件读就行了。
1 | import org.apache.thrift.protocol.TBinaryProtocol; |
测试代码:1
2
3
4public static void main(String[] args) throws Exception {
String msg = (String) ThriftFactory.doRequest(Hello.Client.class, "helloString", "测试");
System.out.println(msg);
}
Hello
是 Thrift 生成的 java 代码,以后如果接口改了或者新增的接口,只需要使用 Thrift 生成代码,放到 java 工程中,修改doRequst
的参数就行了。