010 Hystrix使用

一 .概述

在本次,我们会分成下面的两个部分记性Hystrix的介绍.

[1]Ribbon+RestTemplate的使用

[2]Feign的使用

 

二 .Ribbon的使用

[1]添加依赖包

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

[2]启动类改造

@EnableCircuitBreaker

添加上述的注解

[3]修改微服务的调用.

    @HystrixCommand(fallbackMethod="queryUserHystrix")
    @GetMapping("user/{id}")
    public User queryUser(@PathVariable("id") int id) {
        return restTemplate.getForObject("http://cloud-producer/user/"+id, User.class);
    }
    
    public User queryUserHystrix(int id) {
        return new User(-666,"trek","no server");
    }

我们在方法的调用上面添加了一个注解,其中我们指定了fallback方法.

环境的验证处理:

我们启动eureka和consumer,此时服务的提供者是不存在的,因此我们的调用一定出出现问题.

我们看看加入了Hystrix之后,我们的调用的情况是怎么样的.

我们发现现在我们的微服务实现了容错的功能.

 

三 .Feign之中Hystrix的使用.

[1]添加依赖

[2]修改启动类

[3]修改配置文件的内容

feign:
  hystrix:
    enabled: true

[4]添加fallback方法

@FeignClient(value="cloud-producer",fallback=UserHystrix.class)
public interface UserFeign {
    
    @GetMapping("/user/{id}")
    User queryUserByid(@PathVariable("id") int id) ;
}

一旦出现问题,就会回调上面的配置类.

@Component
public class UserHystrix implements UserFeign{

    @Override
    public User queryUserByid(int id) {
        return new User(-666,"trek","no server");
    }

}

 

此外,springcloud也为我们提供了另外的一种方式,实现FallBackFactory,这样可以获取异常信息.

@FeignClient(value="cloud-producer",fallbackFactory=UserHystrixFactory.class)
public interface UserFeign {
    
    @GetMapping("/user/{id}")
    User queryUserByid(@PathVariable("id") int id) ;
}

此时,我们添加的fallback为一个工厂对象.

@Component
public class UserHystrixFactory implements FallbackFactory<UserFeign>{

    @Override
    public UserFeign create(Throwable throwable) {
        return new UserFeign() {

            @Override
            public User queryUserByid(int id) {
                System.out.println(throwable);
                return new User(-666,"trek","no server");
            }
            
        };
    }

}

 

posted @ 2019-03-04 18:44  最爱五仁月饼  阅读(124)  评论(0编辑  收藏  举报