java gradle 项目 在idea上 搭建一个简单的thrift实例

前言

Thrift是RPC通信的一种方式,可以通过跨语言进行通信,最近项目需要进行跨语言的通信,因此首先尝试搭建了一个简单的thrift框架,因为网上的实例大都参差不全,通过gpt查询得到的结果对我帮助更大一点,但是也不够仔细,因此做此总结,希望给需要的人帮助。

正文

1 创建一个gradle项目

首先我们需要创建一个gradle项目,如果你是在当前项目的基础上也可以不做创建哦。

2 添加依赖

找到根目录的bulid.gradle 文件添加依赖

ependencies {
    implementation 'org.apache.thrift:libthrift:0.15.0'
}

之后idea会提示你导入依赖,或者收到更新一下依赖就可以生成thrift对应的依赖。

3创建一个简单的demo

  1. 创建 .thrift文件
    创建一个文件夹比如命名为thrift,在文件下创建一个.thrift文件,用于生成对应语言的代码。
    比如我创建了一个login.thrift 文件,添加两个方法,一个有返回值,一个没有返回值。
    创建的文件↓:
    java gradle 项目 在idea上 搭建一个简单的thrift实例_第1张图片
    文件内容↓:java gradle 项目 在idea上 搭建一个简单的thrift实例_第2张图片

  2. 通过命令生成对应的java接口代码
    这是thrift的一套机制,因为thrift是跨语言的,所以你要生成你的接口对应语言的service。
    在你刚才创建的 .thrift文件所在的路径下执行命令。
    找到你的 .thrift文件,右键,open in terminal,执行命令

thrift --gen java loginService.thrift
其中 xx.thrift 就是你刚才创建的文件

() 如果你发现,这个命令没办法执行,那你需要先执行这个命令哦:(亲测有效)

sudo zypper install thrift

他就会自动生成文件夹和文件↓
java gradle 项目 在idea上 搭建一个简单的thrift实例_第3张图片

  1. 写一个实现类,实现刚才生成的接口
    针对你需要的功能,写一个实现类,比如我写一个loginServiceImpl,实现刚才生成的接口类。
    java gradle 项目 在idea上 搭建一个简单的thrift实例_第4张图片
    到现在为止,我们已经完成了大部分,之后我们就开始写一个服务端和一个客户端去测试了。thrfit需要创建一个server端和一个client端,用于我们发送通信和接收通信。

  2. 写服务端
    创建一个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.Processor<loginServiceImpl> 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();
        }
    }
}
  1. 写一个客户端
    创建一个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 protocol=new TBinaryProtocol(transport);
            loginService.Client client=new loginService.Client(protocol);
            //你的实现类的方法
            client.login();
            boolean result= client.login1();
            System.out.println(result);
            transport.close();
    }
}
  1. 测试
    先启动一下服务端,然后再启动一下客户端,我的login1()方法是有返回值的,当启动了客户端,就可以在服务端的执行日志那里看到我的相关返回值啦
    java gradle 项目 在idea上 搭建一个简单的thrift实例_第5张图片

你可能感兴趣的:(java,intellij-idea,开发语言)