Hystrix斷路器解決服務雪崩問題

解決rest方法調用雪崩問題

依賴

在調用端新增依賴

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

 

@Service
public class OrderService {

    @Autowired
    RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "orderError")
    public List<String> getOrderByUserList(){
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return restTemplate.getForObject("http://member-service/getUserList",List.class);
    }

    public  List<String> orderError(){
        List<String> list = new ArrayList<>();
        list.add("發生錯誤了");
      return list  ;
    }

}

 啓動類上加上@EnableHystrix註解

 

@HystrixCommand 作用:服務發生錯誤,回調方法

@EnableHystrix 啓動斷路器

超過時間沒有請求到服務就會走到fallback

二。使用feign方法調用解決雪崩問題

@FeignClient(value = "member-service",fallback = HystrixHegin.class)
public interface MemberFeign {


    @RequestMapping("/getUserList")
    public List<String> getUserListByFeign();
}
@Component
public class HystrixHegin implements MemberFeign {
    @Override
    public List<String> getUserListByFeign() {
        List<String> list = new ArrayList<>();
        list.add("發生錯誤了");
        return list;
    }
}

配置文件新增

feign:

   hystrix:

     enabled: true

啓動類上加上@EnableHystrix註解

效果一樣

springcloud默認是超時時間是1秒鐘,

可以設置

配置加入

###超時時間
hystrix:
   command: 
     default: 
       execution: 
        isolation:
         thread: 
          timeoutInMilliseconds: 4000

 設置tomcat最大線程數量

server:
  port: 8765
  tomcat:
    max-threads: 50

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章