前言

该我的项目基于 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-servicespringcloud-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 服务再次拜访