Thrift——mac环境入门实践

1、安装thrift

终端使用命令,安装homebrew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

然后 安装thrift 0.9.3(网上随便一个教程跟着做)

2、使用thrift生成Java文件

在命令行中进入user.thrift所在的目录,然后执行thrift -r -gen java user.thrift.

会发现在当前目录下生成了gen-java文件夹,将文件夹中的userService文件copy到项目目录下.

这个文件定义了接口,入参,出参,是客户端和服务器共同使用的一个文件.也是thrift框架很重要的一部分.

namespace java thrift_demo

service  UserService {
  string getName(1:i32 id)
  bool isExist(1:string name)
}

生成的文件: 

3、生成的文件的实现类

package server;

import org.apache.thrift.TException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @Author: zongxin
 * @Description: thrift生成的java文件的实现类
 */
public class UserServiceImpl implements UserService.Iface {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    private final static String HUYANSHI = "HUYANSHI";

    @Override
    public String getName(int id) throws TException {
        System.out.println("id :" + id);
        return HUYANSHI;
    }

    @Override
    public boolean isExist(String name) throws TException {
        System.out.println("receive isExist, name = " + name);
        return HUYANSHI.equals(name);
    }
}

4、thrift服务端提供与客户端消费

package server;

import org.apache.thrift.TException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @Author: zongxin
 * @Description: thrift生成的java文件的实现类
 */
public class UserServiceImpl implements UserService.Iface {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    private final static String ZONGX = "ZONGX";

    @Override
    public String getName(int id) throws TException {
        System.out.println("id :" + id);
        return ZONGX;
    }

    @Override
    public boolean isExist(String name) throws TException {
        System.out.println("receive isExist, name = " + name);
        return HUYANSHI.equals(name);
    }
}
package client;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.*;
import server.UserService;


/**
 * @Author: zongxin
 * @Description: thrift客户端
 */
public class Client {
    private static final String SERVER_IP = "localhost";
    private static final int SERVER_PORT = 2345;//Thrift server listening port
    private static final int TIMEOUT = 3000;

    private void startClient(String userName) {
        TTransport transport = null;
        try {
            transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT);
            // 协议要和服务端一致
            TProtocol protocol = new TBinaryProtocol(transport);
            UserService.Client client = new UserService.Client(protocol);
            transport.open();
            System.out.println(client.getName(1));
            System.out.println(client.isExist("haha"));
        } catch (TTransportException e) {
            e.printStackTrace();
        } catch (TException e) {
            e.printStackTrace();
        } finally {
            if (null != transport) {
                transport.close();
            }
        }
    }

    public static void main(String[] args) {
        Client client = new Client();
        client.startClient("Tom");
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值