spring cloud Feign接口组件中使用Hystrix

一.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注解使用的代码:

@Bean
public 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;

@Component
public 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功能,到此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值