zoukankan      html  css  js  c++  java
  • 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而第二个是直接返回的。

  • 相关阅读:
    通过加载Xib文件来创建UITableViewCell造成复用数据混乱问题方案
    iOS开发过程中常见错误问题及解决方案
    iOS开发常用第三方库
    KVC和KVO的理解(底层实现原理)
    iOS面试必备-iOS基础知识
    iOS应用适配IPV6
    Runtime运行时的那点事儿
    iOS应用性能调优的25个建议和技巧
    iOS清除缓存功能开发
    微信浏览器跳转页面后再返回,如何恢复到跳转前的位置的问题。
  • 原文地址:https://www.cnblogs.com/resentment/p/7136643.html
Copyright © 2011-2022 走看看