@FeignClient(name="springcloud-nacos-producer", qualifier="productApiService", contextId="productApiService", fallback=ProductFallbackApiService.class)
public interface ProductApiService {
@PostMapping(value="/api/product/add", produces=APPLICATION_JSON, consumes=APPLICATION_JSON)
public Result createProduct(@RequestBody Product product);
@PutMapping(value="/api/product/update", produces=APPLICATION_JSON, consumes=APPLICATION_JSON)
public Result
对应的熔断降级处理类:
@Component
public class ProductFallbackApiService implements ProductApiService {
private static final HttpStatus SERVICE_UNAVAILABLE = HttpStatus.SERVICE_UNAVAILABLE;
protected Result defaultFallbackResult() {
return Result.failure().code(String.valueOf(SERVICE_UNAVAILABLE.value())).message(String.format("请求失败:%s, %s", SERVICE_UNAVAILABLE.value(), SERVICE_UNAVAILABLE.getReasonPhrase())).build();
}
protected PageResult defaultFallbackPageResult() {
return PageResult.failure().code(String.valueOf(SERVICE_UNAVAILABLE.value())).message(String.format("请求失败:%s, %s", SERVICE_UNAVAILABLE.value(), SERVICE_UNAVAILABLE.getReasonPhrase())).build();
}
@Override
public Result createProduct(Product product) {
return defaultFallbackResult();
}
@Override
public Result updateProduct(Product product) {
return defaultFallbackResult();
}
@Override
public Result deleteProductById(Long productId) {
return defaultFallbackResult();
}
@Override
public Result getProductById(Long productId) {
return defaultFallbackResult();
}
@Override
public PageResult> getProductListByPage(Product condition, Page page, Sort sort) {
return defaultFallbackPageResult();
}
}