美文网首页
011--Eureka使用Hystrix

011--Eureka使用Hystrix

作者: 糖纸疯了 | 来源:发表于2018-05-20 15:14 被阅读11次

    话题一:如何使用Hystrix

    • 1.创建一个最简单的Consumer
    • 2.在配置文件中添加对Hystrix的引用
        <dependencies>
            <!-- 连接hystrix配置 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-hystrix</artifactId>
            </dependency>
            <!-- 连接Eureka配置,将微服务注册到Eureka上面 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <!-- 连接Feign配置 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-feign</artifactId>
            </dependency>
            <!-- actuator监控器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        </dependencies>
    

    3.在主程序启动的地方添加@EnableCircuitBreaker

        @SpringBootApplication
        @EnableEurekaClient
        @EnableCircuitBreaker
        public class ServerConsumeHystrixApplication {
            @Bean
            @LoadBalanced
            public RestTemplate restTemplate() {
                return new RestTemplate();
            }
          
            public static void main(String[] args) {
                SpringApplication.run(ServerConsumeHystrixApplication.class, args);
            }
        }
    
    • 4.在要进行断路的方法前面添加配置

    @HystrixCommand(fallbackMethod="findByIdFallBack")
    创建一个参数一模一样的方法,返回默认值

    • 5.#设置Hystrix的超时时间(配置版)
        hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 500
        hystrix.command.default.execution.timeout.enabled:  false
    

    6.#设置Hystrix的超时时间(标注版)

        @GetMapping("/movie/{id}")
        @HystrixCommand(commandProperties = {
                  @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "5000"),
                  @HystrixProperty(name = "execution.timeout.enabled", value = "false")},fallbackMethod="findByIdFallBack")
        public User findById(@PathVariable Long id) {
          return this.restTemplate.getForObject("http://server-provider/simple/" + id, User.class);
        }
    

    相关文章

      网友评论

          本文标题:011--Eureka使用Hystrix

          本文链接:https://www.haomeiwen.com/subject/qiktjftx.html