Spring Cloud Alibaba Sentinel 除了对 RestTemplate 做了支持,同样对于 Feign 也做了支持,如果我们要从 Hystrix 切换到 Sentinel 是非常方便的,下面来介绍下如何对 Feign 的支持以及实现原理。
集成 Feign 使用
spring-cloud-starter-alibaba-sentinel 的依赖还是要加的,如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
需要在配置文件中开启 sentinel 对 feign 的支持:
feign.sentinel.enabled=true
然后我们定义自己需要调用的 Feign Client:
@FeignClient(name = "user-service", fallback = UserFeignClientFallback.class)
public interface UserFeignClient {
@GetMapping("/user/get")
public String getUser(@RequestParam("id") Long id);
}
定义 fallback 类 UserFeignClientFallback:
@Component
public class UserFeignClientFallback implements UserFeignClient {
@Override
public String getUser(Long id) {
return "fallback";
}
}
测试代码:
@Autowired
private UserFeignClient userFeignClient;
@GetMapping("/testFeign")
public String testFeign() {
return userFeignClient.getUser(1L);
}
你可以将这个 Client 对应的 user-service 停掉,然后就可以看到输出的内容是 “fallback”
如果要对 Fei