28.实现FallbackFactory容错获取异常

2020-05-29  本文已影响0人  LANSHENGYANG

实现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);
}
上一篇 下一篇

猜你喜欢

热点阅读