1.force:return
客户端做如下配置,force:return时,直接走mock,不去远端服务
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class)
.getAdaptiveExtension();
// (2)根据zk地址,获取具体的zk注册中心的客户端实例
Registry registry2 = registryFactory.getRegistry(URL.valueOf("zookeeper://127.0.0.1:2181"));
// (3)注册降级方案到zk
registry2.register(URL.valueOf(
"override://0.0.0.0/service.GreetingService?category=configurators&dynamic=false&application=first-dubbo-consumer&"
+ "mock=force:return+null&group=dubbo&version=1.0.0"));
2.fail:return
客户端做如下配置,fail:return时,先走远端,成功返回成功的结果,失败走mock
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class)
.getAdaptiveExtension();
// (2)根据zk地址,获取具体的zk注册中心的客户端实例
Registry registry2 = registryFactory.getRegistry(URL.valueOf("zookeeper://127.0.0.1:2181"));
// (3)注册降级方案到zk
registry2.register(URL.valueOf(
"override://0.0.0.0/service.GreetingService?category=configurators&dynamic=false&application=first-dubbo-consumer&"
+ "mock=fail:return+null&group=dubbo&version=1.0.0"));
3.原理
当以参数force调用上述代码时,降级策略就回写入Zookeeper服务器service.GreetingService字数中Type=configurators的下面
当服务消费者启动时,回去订阅service.GreetingService自述中信息,
当吊费者发起远程调用时,会看是否设置了force:return降级策略,如果设置了,则不发起远程调用。
如果远程结果成功,则直接返回结果,如果失败,则看当前是否设置了fail:return的降级策略,如果设置了,则返回mock,否则返回服务失败的具体原因。
网友评论