- public class BaseService {
- @Autowired
- protected RestTemplate restTemplate;
- protected static String SERVICE_BIZ = "http://service-biz";
- @Bean
- @LoadBalanced
- // 开启负载均衡
- RestTemplate restTemplate() {
- return new RestTemplate();
- }
- }
- /**
- * Created by gaomin on 2017/12/24.
- */
- @Service
- public class RestTemplateServiceImp extends BaseService implements RestTemplateService {
- @Override
- @HystrixCommand(fallbackMethod = "getBizSerivceDataErrorBack")
- public Object getBizSerivceData() {
- String url = SERVICE_BIZ+"/index/findUserMenuList";
- Map<String,Object> uriVariables = new HashMap<>();
- return restTemplate.getForObject(url,Object.class);
- }
- /**
- * getBizSerivceDataErrorBack 和 getBizSerivceData 参数要一样返回类型也要一样
- * 服务降级 SERVICE_BIZ 服务挂了, 自动走这个方法. 适用于所有第三方
- * 调用别的服务时, 如果别的服务未响应, 会导致本服务请求阻塞, 这个可以解决断路由保护
- * 直接返回 error, 默认请求时间 2000 毫秒
- * @return
- */
- public Object getBizSerivceDataErrorBack(){
- // 可以重新请求, 还可以继续降级 ....
- return null;
- }
- }
我们经常调用第三方的东西, 如果延迟了, 服务挂了, 我们不希望会导致自己的接口阻塞, 报错等等.
来源: http://www.bubuko.com/infodetail-2883657.html