thrift服务

异常

在thrift定义文件中可以定义exception,它和一般struct最大的不同是生成的类是继承了TException,在定义的服务上就可以表明可能抛出的异常,值得注意的是,所有的thrift方法都会抛出TException,所以在客户端一定要做好异常处理防止导致程序的异常崩溃

   string method(1:string param) throws (1:InvalidOperation ouch),

oneway

thrift在定义service时可以指定oneway,即一般方法都是同步执行的,需要等待执行完成获得结果,而oneway方法是异步执行的,不需要等待运行完,但同时也不能对oneway方法设置返回类型

service PingService{
   oneway void pingAsync(),
   void pingSync()
}

对两个方法在服务端都暂停10秒返回

    @Override
    public void pingSync() throws TException {
        System.out.println("ping start");
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("ping end");
        return;
    }
    @Override
    public void pingAsync() throws TException {
        System.out.println("ping start");
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("ping end");
        return;
    }

客户端调用时调用前一个方法会等到方法返回才继续运行,而oneway的方法不会等待运行完成

long start=System.currentTimeMillis();
System.out.println("start ping");
client.pingSync();
System.out.println("end "+ (System.currentTimeMillis()-start));
start=System.currentTimeMillis();
System.out.println("start ping");
client.pingAsync();
System.out.println("end "+ (System.currentTimeMillis()-start));
        
start ping
Received 1
end 10057
start ping
end 4

可以看到第一个调用用了10s而第二个是直接返回的。

转载于:https://www.cnblogs.com/resentment/p/7136643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值