本地伪装
本地伪装 通常用于服务降级,比如某验权服务,当服务提供方全部挂掉后,客户端不抛出异常,而是通过 Mock 数据返回授权失败。
在 spring 配置文件中按以下方式配置:
或
在工程中提供 Mock 实现 :
package com.foo;public class BarServiceMock implements BarService { public String sayHello(String name) { // 你可以伪造容错数据,此方法只在出现RpcException时被执行 return "容错数据"; } }
如果服务的消费方经常需要 try-catch 捕获异常,如:
Offer offer = null;try { offer = offerService.findOffer(offerId);} catch (RpcException e) { logger.error(e);}
请考虑改为 Mock 实现,并在 Mock 实现中 return null。如果只是想简单的忽略异常,在 2.0.11
以上版本可用:
1. Mock 是 Stub 的一个子集,便于服务提供方在客户端执行容错逻辑,因经常需要在出现 RpcException (比如网络失败,超时等)时进行容错,而在出现业务异常(比如登录用户名密码错误)时不需要容错,如果用 Stub,可能就需要捕获并依赖 RpcException 类,而用 Mock 就可以不依赖 RpcException,因为它的约定就是只有出现 RpcException 时才执行。
2. 在 interface 旁放一个 Mock 实现,它实现 BarService 接口,并有一个无参构造函数