实现FallbackFactory容错获取异常
- 第1步:编写ProductServiceFallbackFactory类实现FallbackFactory接口
/**
* 这是容错类,它要求我们要实现一个FallbackFactory<要为哪个接口产生容错类>
*/
@Slf4j
@Service
public class ProductServiceFallbackFactory implements FallbackFactory<ProductService> {
/**
* 容错方法
* @param throwable feign在调用过程中产生的异常
* @return
*/
@Override
public ProductService create(Throwable throwable) {
return new ProductService() {
@Override
public Product findByPid(Integer pid) {
log.error("{}",throwable);
//容错逻辑
Product product = new Product();
product.setPid(-100);
product.setPname("远程调用商品微服务出现异常了,进入了容错逻辑");
return product;
}
};
}
}
/**
* value:指定那个微服务
* fallback:指定当前feign接口的容错类
*/
@FeignClient(
value = "service-product",
//fallback = ProductServiceFallBack.class,
fallbackFactory = ProductServiceFallbackFactory.class
)
public interface ProductService {
/* @FeignClient的value + @RequestMapping的value值,其实就是一个完整的请求地址
* http://service-product/product/{pid}
*/
@RequestMapping("/product/{pid}")
Product findByPid(@PathVariable("pid") Integer pid);
}
网友评论