上节写了ribbon 整合hystrix的实例,本节准备实现feign,因为比较简单,只写关键代码,具体看github源码java
建立fallback包存放feign的fallback处理类,包结构以下:git
UserFeignApi为入口调用类github
package com.mayi.springcloud.api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import com.mayi.springcloud.client.UserFeignClient; @RestController public class UserFeignApi { @Autowired private UserFeignClient userFeignClient; @GetMapping("/listUsersByFeign") public String ListUsers(){ String users = this.userFeignClient.listUsers(); return users; } }
UserFeignClient为实现feign的接口web
package com.mayi.springcloud.client; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import com.mayi.springcloud.fallback.UserFallback; @FeignClient(name="service-user", fallback=UserFallback.class) public interface UserFeignClient { @GetMapping("/listUsers") public String listUsers(); }
UserFallback为节点故障处理类spring
package com.mayi.springcloud.fallback; import org.springframework.stereotype.Component; import com.mayi.springcloud.client.UserFeignClient; @Component public class UserFallback implements UserFeignClient{ @Override public String listUsers() { // TODO Auto-generated method stub return "服务调用失败"; } }
配置中心的service-feign-hystrix-dev.ymlapi
server: port: 1001 feign: hystrix: enabled: true
依次启动下图服务微信
访问http://localhost:1001/listUsersByFeign,交替出现架构
手动中止其中一个service-user服务,当负载均衡至该节点,会转到自定义的fallback类app
若干秒后,该故障节点会被剔除,以后不会被其余调用者访问到。负载均衡
源码地址:https://github.com/tianyana/s...
欢迎加入JAVA架构师QQ群(初建):618578034
接下来,我会依次更新文章,直至整个架构完成,若有兴趣的朋友关注做者 或 加我微信 拉你进入spring cloud社区群
微信公众号:java架构师修行
本公众号从2018-5.1日 - 2019.5.1日期间,将要按照JAVA高级软件架构师实战培训的路线发布一期完整的架构文章,难度由浅入深,适合有必定开发基础想转架构和正在作初级架构开发的人员学习(springcloud更新完毕即开始)