SpringCould-熔断
启动类增加注解 启用熔断机制。
package com.sxpcwlkj.order_server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableFeignClients
@EnableCircuitBreaker //启用熔断机制
public class OrderServerApplication { public static void main(String[] args) { SpringApplication.run(OrderServerApplication.class, args); } @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }
}
创建类 ProductClientFallback
集成了 Feign 接口类
package com.sxpcwlkj.order_server.fallbcak;
import com.sxpcwlkj.order_server.service.ProductClient;
import org.springframework.stereotype.Component;
/** * 针对商品服务,错降级处理 * 这里是集成了 Feign 接口类 */
@Component
public class ProductClientFallback implements ProductClient { @Override public String selectByIdTwo(int id) { System.err.println("XXXXXXXXXXXXXXXXXXXXX"); return "鸭梨山大..."; }
}
管理配置注解
@FeignClient(name = "product-service",fallback = ProductClientFallback.class)
package com.sxpcwlkj.order_server.service;
import com.sxpcwlkj.order_server.fallbcak.ProductClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/** * 商品服务客户端 */
@FeignClient(name = "product-service",fallback = ProductClientFallback.class)
//@FeignClient(name = "product-service")
public interface ProductClient { @GetMapping("/api/v1/product/selectByIdTwo") String selectByIdTwo(@RequestParam(value = "id") int id);
}
模拟:
商品服务抛异常
会走
System.err.println("XXXXXXXXXXXXXXXXXXXXX");
return "鸭梨山大...";