在开启熔断器后 如果 跨服务失败 调用某个方法 处理一些 事情 使用
@FeignClient(name = “logs-service”, fallback = LogFall.class)
fallback 这个属性 是不可以获取 错误信息 只能给予友好提示 等等
如果需要获取 错误信息 则使用
@FeignClient(name = “logs-service”, fallbackFactory = LogsFallbackFactory.class)
fallbackFactory 这个属性
然后 在 LogsFallbackFactory.class 类中 写具体 获取 错误信息的程序
package com.erp.init.feign.fallback.log; import com.erp.api.entities.logs.YsHandleLog; import com.erp.api.out.R; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component public class LogsFallbackFactory implements FallbackFactory{ @Override public LogFall create(Throwable cause) { return new LogFall() { @Override public R save(YsHandleLog ysHandleLog) { // log.info("" + JSONObject.toJSonString(ysHandleLog)); // 异常抛出 log.error("【跨log服务调用异常】"+cause.getMessage(),cause); return null; } }; } }
package com.erp.init.feign.fallback.log;
import com.erp.api.entities.logs.YsHandleLog;
import com.erp.api.out.R;
import com.erp.init.feign.LogFeign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class LogFall implements LogFeign {
@Override
public R save(YsHandleLog ysHandleLog){
return null;
}
}
在这个类里 在去重写 fallback 这个属性对应的类 方法
根据个人需求 更改 也可以不实现
因为 fallback 和 fallbackFactory 这两个属性 不能共同使用
如果都需要 可以仿照 以上写法



