前言
该我的项目基于 SpringCloud整合Feign调用重构 环境上演示。
模块构建
引入公共模块 springcloud-common
- BaseApiService
package com.baba.wlb.base;import lombok.Data;import org.springframework.stereotype.Component;@Data@Componentpublic class BaseApiService<T> { public BaseResponse<T> setResultError(Integer code, String msg) { return setResult(code, msg, null); } // 返回谬误,能够传msg public BaseResponse<T> setResultError(String msg) { return setResult(500, msg, null); } // 返回胜利,能够传data值 public BaseResponse<T> setResultSuccess(T data) { return setResult(200, "success", data); } // 返回胜利,沒有data值 public BaseResponse<T> setResultSuccess() { return setResult(200, "success", null); } // 返回胜利,沒有data值 public BaseResponse<T> setResultSuccess(String msg) { return setResult(200, msg, null); } // 通用封装 public BaseResponse<T> setResult(Integer code, String msg, T data) { return new BaseResponse<T>(code, msg, data); } //调用数据库封装 public Boolean toDaoResult(int result){ return result>0?true:false; }}
- BaseResponse
package com.baba.wlb.base;import lombok.Data;@Datapublic class BaseResponse<T> { /** * 返回码 */ private Integer code; /** * 音讯(最好用简写,不占用宽带) */ private String msg; /** * 数据 */ private T data; public BaseResponse() { } public BaseResponse(Integer code, String msg, T data) { super(); this.code = code; this.msg = msg; this.data = data; }}
同时在 springcloud-api-member-service
和 springcloud-api-order-service
中都引入 springcloud-common
模块maven依赖。
springcloud-api-member-service
新增测试接口 getUserInfo():
@RequestMapping("/getUserInfo")BaseResponse getUserInfo();
springcloud-api-member-service-impl
实现类中对接口提早1.5s操作:
@Overridepublic BaseResponse getUserInfo() { try { // 产生1.5s 的提早 Thread.sleep(1500); } catch (Exception e) { e.printStackTrace(); } return setResultSuccess("订单服务接口调用会员服务接口胜利!");}
springcloud-api-order-service-impl
订单模块调用会员模块:
@Override@RequestMapping("/getUserInfoByMember")public BaseResponse getUserInfoByMember() { return memberServiceFeign.getUserInfo();}
测试
启动 Eureka Server服务,以及订单和会员服务,并
浏览器拜访 http://localhost:8200/getUserInfoByMember:
查看后盾日志:发现报超时谬误。
解决方案
在 springcloud-api-order-service-impl
模块中加上如下配置配置 开启超时工夫配置:
ribbon: ##指的是建设连贯所用工夫,实用于网络状态失常的状况下,两端连贯所用的工夫 ReadTimeout: 5000 ##指的是建设连贯后从服务器读取到可用资源工夫 ConnectTimeout: 5000
重启order 服务再次拜访