安徽网站开发费用,找人做效果图去什么网站,做网站的一个专题,广告赚钱前言
Thrift是RPC通信的一种方式#xff0c;可以通过跨语言进行通信#xff0c;最近项目需要进行跨语言的通信#xff0c;因此首先尝试搭建了一个简单的thrift框架#xff0c;因为网上的实例大都参差不全#xff0c;通过gpt查询得到的结果对我帮助更大一点#xff0c;但…前言
Thrift是RPC通信的一种方式可以通过跨语言进行通信最近项目需要进行跨语言的通信因此首先尝试搭建了一个简单的thrift框架因为网上的实例大都参差不全通过gpt查询得到的结果对我帮助更大一点但是也不够仔细因此做此总结希望给需要的人帮助。
正文
1 创建一个gradle项目
首先我们需要创建一个gradle项目如果你是在当前项目的基础上也可以不做创建哦。
2 添加依赖
找到根目录的bulid.gradle 文件添加依赖
ependencies {implementation org.apache.thrift:libthrift:0.15.0
}之后idea会提示你导入依赖或者收到更新一下依赖就可以生成thrift对应的依赖。
3创建一个简单的demo 创建 .thrift文件 创建一个文件夹比如命名为thrift在文件下创建一个.thrift文件用于生成对应语言的代码。 比如我创建了一个login.thrift 文件添加两个方法一个有返回值一个没有返回值。 创建的文件↓ 文件内容↓ 通过命令生成对应的java接口代码 这是thrift的一套机制因为thrift是跨语言的所以你要生成你的接口对应语言的service。 在你刚才创建的 .thrift文件所在的路径下执行命令。 找到你的 .thrift文件右键open in terminal执行命令
thrift --gen java loginService.thrift
其中 xx.thrift 就是你刚才创建的文件(▽) 如果你发现这个命令没办法执行那你需要先执行这个命令哦亲测有效
sudo zypper install thrift他就会自动生成文件夹和文件↓ 写一个实现类实现刚才生成的接口 针对你需要的功能写一个实现类比如我写一个loginServiceImpl实现刚才生成的接口类。 到现在为止我们已经完成了大部分之后我们就开始写一个服务端和一个客户端去测试了。thrfit需要创建一个server端和一个client端用于我们发送通信和接收通信。 写服务端 创建一个thriftServer类你可以随意命名。举例↓
package com.gehc.surgery.thrift.Server;
import com.gehc.surgery.thrift.loginServiceImpl;
import com.gehc.surgery.thrift.loginService;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;public class ThriftServer {public static void main(String[] args){try {//刚才自己创建的实现类loginServiceImpl login new loginServiceImpl();TServerSocket serverSocket new TServerSocket(9090);loginService.ProcessorloginServiceImpl processor new loginService.Processor(login);TServer.Args serverArg new TServer.Args(serverSocket);serverArg.processor(processor);TSimpleServer server new TSimpleServer(serverArg);server.serve();}catch (Exception e){e.printStackTrace();}}
}写一个客户端 创建一个thriftClient类类名你可以自己命名写法如下↓
package com.gehc.surgery.thrift.Client;import com.gehc.surgery.thrift.loginService;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;public class ThriftClient {public static void main(String[] args) throws TException {//自己定一下ip和端口 我随意定义的TTransport transport new TSocket(localhost,9090);transport.open();TBinaryProtocol protocolnew TBinaryProtocol(transport);loginService.Client clientnew loginService.Client(protocol);//你的实现类的方法client.login();boolean result client.login1();System.out.println(result);transport.close();}
}测试 先启动一下服务端然后再启动一下客户端我的login1方法是有返回值的当启动了客户端就可以在服务端的执行日志那里看到我的相关返回值啦