Netty-8 thrift

Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用
下载地址:
http://mirror.bit.edu.cn/apache/thrift/
官方文档
http://thrift.apache.org/

namespace java netty.thrift

typedef i16 short
typedef i32 int
typedef i64 long
typedef string String
typedef bool boolean

struct Person{
    1: optional String username;
    2: optional int age;
    3: optional boolean married;
}

exception MessageException{
    1: optional String message,
    2: optional String callStack,
    3: optional String date,
}

service PersonService{
    Person getPersonByName(1:required String username) throws (1:MessageException messageException);
}

用 thrift -gen java D:\Thrift\auth.thrift可以生成Java代码

服务器代码

public class ThriftServer {

    public static void main(String[] args) throws Exception {
        //创建非阻塞式socket
        TNonblockingServerSocket socket = new TNonblockingServerSocket(8080);
        //io异步handle同步服务
        THsHaServer.Args arg = new THsHaServer.Args(socket).minWorkerThreads(2).maxWorkerThreads(4);
        PersonService.Processor <PersonServiceImpl> processor = new PersonService.Processor <>(new PersonServiceImpl());
        arg.protocolFactory(new TCompactProtocol.Factory());
        arg.transportFactory(new TFramedTransport.Factory());
        arg.processorFactory(new TProcessorFactory(processor));
        TServer server = new THsHaServer(arg);
        System.out.println("Thrift server started!");
        server.serve();
    }
}

客户端代码


public class ThriftClient {
    public static void main(String[] args) {
        //绑定运输地址
        TTransport transport = new TFramedTransport(new TSocket("localhost", 8080), 600);
        //通信协议
        TCompactProtocol protocol = new TCompactProtocol(transport);
        //service
        PersonService.Client client = new PersonService.Client(protocol);
        try {
           transport.open();
            Person person = client.getPersonByName("张三");
            System.out.println(person.getAge());
            System.out.println(person.getUsername());
            System.out.println(person);

        } catch (Exception ex) {
            throw new RuntimeException(ex.getMessage(), ex);
        } finally {
            transport.close();
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值