在开启熔断器后 如果 跨服务失败 调用某个方法 处理一些 事情 使用
@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;
/**
* User: Json
* <p>
* Date: 2022/3/10
**/
@Slf4j
@Component
public class LogsFallbackFactory implements FallbackFactory<LogFall> {
@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;
/**
* User: Json
* <p>
* Date: 2022/3/11
**/
@Slf4j
@Component
public class LogFall implements LogFeign {
@Override
public R save(YsHandleLog ysHandleLog){
return null;
}
}
在这个类里 在去重写 fallback 这个属性对应的类 方法
根据个人需求 更改 也可以不实现
因为 fallback 和 fallbackFactory 这两个属性 不能共同使用
如果都需要 可以仿照 以上写法