一)使用的Fegin进行服务的调用异常日志处理
1.修改ProductCustomerServiceFallback,将接口实现换为FallBackFactory接口的实现
2.在create方法内对ProductCustomerService接口内的数据做托底数据
/**
* @project_name:springcloud
* @date:2019/9/4:14:22
* @author:shinelon
* @Describe:托底数据类 FallbackFactory:使用此类能够获取到在进行远程服务调用的时候的异常信息,泛型写customer内接口的类型
*/
@Component
public class ProductCustomerServiceFallback implements FallbackFactory<ProductCustomerService>
{
//创建Logger对象使用的是slf4j内的日志对象
Logger logger = LoggerFactory.getLogger(ProductCustomerServiceFallback.class);
@Override
public ProductCustomerService create(final Throwable throwable)
{
//在这里创建Customer接口内的服务方法使用匿名内部类的方式
return new ProductCustomerService()
{
@Override
public List<Product> findAllProduct()
{
//注意一logger日志的的方法最好写在的Customer内的方法内,不要写在外面
logger.warn("ProductService Exception :",throwable);
List<Product> list = Arrays.asList(new Product("我是托底数据", -1));
return list;
}
};
}
}
3.测试
接口
/**
* @FeignClient:注解的作用是指定的一个Feign客户端 name:找到指定的实现了服务的应用名字,当前案例中是15-feign-provider实现了所以name的值
* 应该为15-feign-provider(这个的值是Spring.application.name的值)
* fallbackFactory:返回托底数据的类
* feign进行降级处理的时候不能和服务接口有联系
*/
@FeignClient(name = "15-feign-provider", fallbackFactory = ProductCustomerServiceFallback.class)
public interface ProductCustomerService
{
@GetMapping(value = "/product/findAllProduct")
public List<Product> findAllProduct();
}