如果Hystrix在类路径上,feign.hystrix.enable=true,Feign将用断路器包装所有方法。
Hystrix支持回退的概念:当电路断开或出现错误时执行的默认代码路径。要为给定的@FeignClient启用回退,请将fallback属性设置为实现回退的类名。
示例代码:
UserFeignClientHystrix 需要实现UserFeignClient
UserFeignClient.java
@FeignClient(name = "springcloud-userservcie", fallback = UserFeignClientHystrix.class)
public interface UserFeignClient {
@RequestMapping(value = "userService/getUser/{userId}", method = RequestMethod.GET)
public User getUser(@PathVariable("userId") String userId);
@RequestMapping(value = "userService/saveUser", method = RequestMethod.POST)
public String saveUser(User user);
@RequestMapping(value = "userService/deleteUser/{userId}", method = RequestMethod.GET)
public Boolean deleteUser(@PathVariable("userId") String userId);
@RequestMapping(value = "userService/findUserByUserNameAndPassword", method = RequestMethod.GET)
public User findUserByUserNameAndPassword(@RequestParam("userName") String userName, @RequestParam("password") String password);
}
UserFeignClientHystrix.java
@Component
public class UserFeignClientHystrix implements UserFeignClient {
@Override
public User getUser(String userId) {
System.out.println("打开了断路器--->" + userId);
return null;
}
@Override
public String saveUser(User user) {
return null;
}
@Override
public Boolean deleteUser(String userId) {
return null;
}
@Override
public User findUserByUserNameAndPassword(String userName, String password) {
return null;
}
}