spring cloud Feign接口组件中使用Hystrix
发布日期:2021-05-08 17:37:53 浏览次数:24 分类:精选文章

本文共 2208 字,大约阅读时间需要 7 分钟。

一.Feign组件调用远程服务的实现过程:

1.在controller层调用fegin定义的接口
2.在fegin的接口中,在头部定义@FeginClient,以及要调用的实例名称,配置信息,同时在每个调用方法前面加上@RquestLine等注解来定义请求访问的url和方式。

二.在Feign接口组件中使用Hystrix

Spring Cloud默认已为Feign整合了Hystrix,Feign默认就会用断路器包裹所有方法。如果要使用Feign的Hystrix支持,可以设置feign.hystrix.enabled=true,要禁用,设置为false即可。

1.修改application.yml文件:

 

2.将controller中:超时熔断代码放到fegin的接口实现类中

修改后:

3.fegin的借口层:

package com.ljf.weifuwu.springcloud.hystrix.service;import com.ljf.weifuwu.springcloud.hystrix.model.HystrixUser;import config.HystrixUserConfig;import feign.Param;import feign.RequestLine;import org.springframework.cloud.netflix.feign.FeignClient;@FeignClient(name="ms-eureka-provider",configuration = HystrixUserConfig.class,fallback = HystrixFallBack.class)public interface HystrixUserFegin {    //和ms-eureka-provider模块中的路径要保持一致/eureka-provider/{id}    //  @GetMapping("/eureka-provider/{id}")    //    public EurekaUser getSingleUser(@PathVariable Long id)    @RequestLine("GET /eureka-provider/{id}")   //使用fegin的特用注解,确保 HystrixUserConfig这个自定义的配置类进行了配置    public HystrixUser getSingleUser(@Param("id") Long id);}

4.fegin接口的实现熔断逻辑的实现类:

1. 接口HystrixUserFegin和实现类HystrixFallBack必须放在同一个包中

2.实现类要实现接口中定义的方法,方法中的逻辑是我们针对出现异常问题要怎么处理的一些逻辑

3.接口中的方法使用fegin特有的请求注解时(@RequestLine("GET /eureka-provider/{id}") ),确保configuration调用的类中实现了开启fegin注解使用的代码:

@Beanpublic Contract feignContract() {    return new feign.Contract.Default();//只识别Feign的注释,不再识别Spring MVC的HTTP注释。}
package com.ljf.weifuwu.springcloud.hystrix.service;import com.ljf.weifuwu.springcloud.hystrix.model.HystrixUser;import com.ljf.weifuwu.springcloud.hystrix.service.HystrixUserFegin;import org.springframework.stereotype.Component;@Componentpublic class HystrixFallBack implements HystrixUserFegin {    /**     * 针对此方法,做的超时异常处理     * @param id     * @return     */    @Override    public HystrixUser getSingleUser(Long id) {        System.out.println("超时发生错误的.....使用fegin-hystrix进行处理");        HystrixUser u=new HystrixUser();        u.setId(00l);        u.setName("fegin-hystrix-超时错误");        return u;    }}

4.启动服务:ms-eureka-center(8761)、ms-eureka-provider(9701)、ms-hystrix-consumer(8005)

5.访问:没问题,都能正常访问

6.验证hystrix超时熔断处理逻辑,关闭ms-eureka-provider服务提供者:再次访问

ok,到此结束,fegin接口组件整合hystrix功能,到此结束。

上一篇:》》》》》spring cloud Feign接口组件中使用FallBackFactory整合hystrix《《《《《
下一篇:spring cloud hystrix 常用配置参数

发表评论

最新留言

不错!
[***.144.177.141]2025年04月05日 04时48分24秒