远程调用rpc的时候 远程的异常如何处理?
返回 错误码+错误描述
这个和RPC协议定义有关系了,一般RPC协议会有错误码的,比如0是正常,其他是错误码,并且附带errMsg
如果 远程rpc是层层调用的,就层层返回,可以加入分布式 追踪系统
设置 RPC timeout
下面是用Future.get(timeout)和Future.cancle()如何中断一个运行中的超时的示例
Callable<Integer> call = ()->{
...
return 0;
};
ExecutorService es = Executors.newFixedThreadPool(1);
Future<Integer> f1 = es.submit(call);
try {
f1.get(3,TimeUnit.SECONDS);
}catch (Exception e){
e.printStackTrace();
f1.cancel(true);
}