|
@@ -0,0 +1,79 @@
|
|
|
+package com.sf.remote;
|
|
|
+
|
|
|
+import com.sf.dto.UserDto;
|
|
|
+import org.springframework.cloud.openfeign.FallbackFactory;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+// 声明一个回退工厂类
|
|
|
+// 工厂类的泛型 是要调用的接口/接口实现类
|
|
|
+// 和直接使用Fallback回退类的区别是 可以处理异常
|
|
|
+@Component
|
|
|
+public class ProviderFallbackFactory implements FallbackFactory<MyProviderClient> {
|
|
|
+
|
|
|
+ // 重写create方法 会返回泛型类型
|
|
|
+ @Override
|
|
|
+ public MyProviderClient create(Throwable cause) {
|
|
|
+ System.out.println("调用provider出错:" + cause.getMessage());
|
|
|
+ // 使用匿名内部类 来返回接口的实现
|
|
|
+ return new MyProviderClient() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String echo(String string) {
|
|
|
+// cause.printStackTrace();
|
|
|
+ return "ProviderFallbackFactory echo fail";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String random(int range) {
|
|
|
+ return "ProviderFallbackFactory random fail";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String testParam(String param) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String testMultiParam(UserDto userDto) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String testMultiParam(String name, Integer age) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String testMultiParam(Map<String, Object> map) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String postUser(UserDto user) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String token() {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String token(String token) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String tokenByInterceptor() {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String timeout() {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|