本文简单介绍 Dubbo 中的 Failsafe Cluster(安全失败)。
1
简介
调用实例失败后,如果有报错,则忽略掉异常,返回一个正常的空结果。
2
如何使用
<dubbo:service cluster="failsafe" />
或
<dubbo:reference cluster="failsafe" />
3
实现逻辑
4
源代码
public class FailsafeClusterInvoker<T> extends AbstractClusterInvoker<T> {
private static final Logger logger = LoggerFactory.getLogger(FailsafeClusterInvoker.class);
public FailsafeClusterInvoker(Directory<T> directory) {
super(directory);
}
@Override
public Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {
try {
checkInvokers(invokers, invocation);
// 根据负载均衡算法选中调用实例
Invoker<T> invoker = select(loadbalance, invocation, invokers, null);
// 执行调用实例
return invoker.invoke(invocation);
} catch (Throwable e) {
// 有异常时不抛出异常,返回一个 RpcResult 对象
logger.error("Failsafe ignore exception: " + e.getMessage(), e);
return new RpcResult(); // ignore
}
}
}
做个有梦想的程序猿
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有