thrift java多线程非阻塞同步/异步调用实例(二)

2014-11-24 07:48:35 · 作者: · 浏览: 2
xception e) {
e.printStackTrace();
}
transport.close();
}

public static void main_asy() throws Exception {
try {
TAsyncClientManager clientManager = new TAsyncClientManager();
TNonblockingTransport transport = new TNonblockingSocket(address, port, clientTimeout);
TProtocolFactory protocol = new TCompactProtocol.Factory();
Hello.AsyncClient asyncClient = new Hello.AsyncClient(protocol, clientManager, transport);
System.out.println("Client calls .....");
MyCallback callBack = new MyCallback();
asyncClient.helloString("larry", callBack);

while (true) {
Thread.sleep(1);
}
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) throws Exception {
main_asy();
}
}

client使用到的回调函数:
[java]
package com.thrift.test.Async;

import org.apache.thrift.TException;
import org.apache.thrift.async.AsyncMethodCallback;

import com.thrift.test.Async.Hello.AsyncClient.helloString_call;

/**
* */
public class MyCallback implements AsyncMethodCallback {

// 返回结果
@Override
public void onComplete(helloString_call response) {
System.out.println("onComplete");
try {
System.out.println(response.getResult().toString());
} catch (TException e) {
e.printStackTrace();
}
}

// 返回异常
@Override
public void onError(Exception exception) {
System.out.println("onError");
}

}



作者:吕桂强