Feign使用Hystrix

Feigh是以接口形式工作,它没有方法体,那么Feign如何整合Hystrix呢?如何实现Feign的回退呢?
事实上,Spring Cloud默认已经为Feign整合了Hystrix,下面看一个实例。
一 新建项目microservice-consumer-movie-feign-hystrix-fallback
二 编写Feigh接口
package com.itmuch.cloud.study.user.feign;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itmuch.cloud.study.user.entity.User;

/**
* Feign的fallback测试
* 使用@FeignClient的fallback属性指定回退类
*/
@FeignClient(name = "microservice-provider-user", fallback = FeignClientFallback.class)
public interface UserFeignClient {
  @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  public User findById(@PathVariable("id") Long id);

}

/**
* 回退类FeignClientFallback需实现Feign Client接口
* FeignClientFallback也可以是public class,没有区别
*/
@Component
class FeignClientFallback implements UserFeignClient {
  @Override
  public User findById(Long id) {
    User user = new User();
    user.setId(-1L);
    user.setUsername("默认用户");
    return user;
  }
}
由代码可知,只须使用@FeignClient注解的fallback属性,就可为指定名称的Feign客户端添加回退。
三 测试
1 启动eureka
2 启动user微服务
3 启动电影微服务
4 访问 http://localhost:8010/user/1,可获得正常结果
{"id":1,"username":"account1","name":"张三","age":20,"balance":100.00}
5 停止用户微服务
6 再次访问 http://localhost:8010/user/1,可获得如下结果,说明当用户微服务不可用,进入了回退逻辑。
{"id":-1,"username":"默认用户","name":null,"age":null,"balance":null}
FeignHystrix是两个常用的工具,用于构建分布式系统中的微服务。Feign是一个声明式的Web服务客户端,通过简单的接口注解来定义和绑定服务之间的通信。而Hystrix是一个用于处理分布式系统中的故障和延迟问题的库。 要使用FeignHystrix,首先需要在配置文件中进行一些基础配置。根据引用和引用的内容,可以参考之前的配置方法,在配置文件中添加如下代码: ``` feign: hystrix: enabled: true ``` 这样就启用了Feign中的Hystrix支持。 在使用FeignHystrix的组合时,通常的做法是将Hystrix作为请求端的设置。这是一种经典的使用方式,可以通过在Feign客户端接口上添加`@FeignClient`注解,并在该注解中设置`fallback`属性来指定Hystrix的回退逻辑。这样当服务提供端发生故障或延迟时,Hystrix会根据预设的策略执行回退逻辑。 具体来说,在使用Feign时,可以通过在接口上添加`@FeignClient`注解,并设置`fallback`属性来指定Hystrix的回退逻辑。例如: ```java @FeignClient(name = "service-name", fallback = MyFallback.class) public interface MyFeignClient { // 定义服务之间的接口 } ``` 在上述例子中,`MyFallback`是一个实现了`MyFeignClient`接口的回退逻辑类。当服务提供端发生故障或延迟时,Hystrix会调用`MyFallback`中定义的方法来执行回退逻辑。 总结一下,使用FeignHystrix可以通过在配置文件中启用Hystrix支持,并在Feign客户端接口上添加`@FeignClient`注解来设置Hystrix的回退逻辑。这样就可以提高分布式系统的可靠性和容错能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值