zoukankan      html  css  js  c++  java
  • Hystrix 服务容错

    第一步:

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-client</artifactId>
            </dependency>
    

     第二步:

    @EnableCircuitBreaker 
    

     第三步:

    package com.example.order.controller;
    
    import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
    import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    /**
     * @Title: HystrixController
     * @ProjectName order
     * @date 2019/12/1911:34
     */
    @RestController
    @DefaultProperties(defaultFallback = "defaultFallback") // 默认调用的方法名
    public class HystrixController {
        // 超时配置
        @HystrixCommand//(commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")})
        @GetMapping("/getProductInfoList")
        public String getProductInfoList() {
            RestTemplate restTemplate = new RestTemplate();
            return restTemplate.postForObject("http://127.0.0.1:8080/product/list",
                    null,
                    String.class);
    //		throw new RuntimeException("发送异常了");
        }
    
        /**
         * 默认方法名, 如果8080服务不通,会调用
         * @return
         */
        private String defaultFallback() {
            return "默认提示:太拥挤了, 请稍后再试~~";
        }
    }
    

      

    yml 配置方式(方法不需要单独配置)

    hystrix:
      command:
        # 配置超时时间
        default:
          execution:
            isolation:
              thread:
                timeoutInMilliseconds: 1000
        getProductInfoList: # 给方法名称单独添加超时时间
          execution:
            isolation:
              thread:
                timeoutInMilliseconds: 3000
    

      

    feign 中直接使用 hystrix 添加配置

    feign:
      hystrix:
        enabled: true
    

     在@FeignClient(name="xxx", fallback=类名.class)  该类需要实现当前接口client类的所有方法

  • 相关阅读:
    chmod命令
    ls命令
    数组值去重-小技巧
    使用redis接管session
    使用redis接管cookie
    redis操作封装类
    HTTP协议详解
    Linux网络编程--多播
    Live555 分析(三):客服端
    Live555 分析(二):服务端
  • 原文地址:https://www.cnblogs.com/412013cl/p/12066944.html
Copyright © 2011-2022 走看看