【Java】SpringCloud整合Feign超时时间配置

SpringCloud整合Feign超时时间配置

isWulongbo发布于 今天 06:49

前言

该项目基于 SpringCloud整合Feign调用重构 环境上演示。

模块构建

引入公共模块 springcloud-common

【Java】SpringCloud整合Feign超时时间配置

  • BaseApiService

package com.baba.wlb.base;

import lombok.Data;

import org.springframework.stereotype.Component;

@Data

@Component

public 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;

@Data

public 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依赖。

【Java】SpringCloud整合Feign超时时间配置

springcloud-api-member-service

新增测试接口 getUserInfo():

@RequestMapping("/getUserInfo")

BaseResponse getUserInfo();

【Java】SpringCloud整合Feign超时时间配置

springcloud-api-member-service-impl

实现类中对接口延迟1.5s操作:

@Override

public BaseResponse getUserInfo() {

try {

// 产生1.5s 的延迟

Thread.sleep(1500);

} catch (Exception e) {

e.printStackTrace();

}

return setResultSuccess("订单服务接口调用会员服务接口成功!");

}

【Java】SpringCloud整合Feign超时时间配置

springcloud-api-order-service-impl

订单模块调用会员模块:

@Override

@RequestMapping("/getUserInfoByMember")

public BaseResponse getUserInfoByMember() {

return memberServiceFeign.getUserInfo();

}

测试

启动 Eureka Server服务,以及订单和会员服务,并
浏览器访问 http://localhost:8200/getUserInfoByMember:
【Java】SpringCloud整合Feign超时时间配置
查看后台日志:发现报超时错误。
【Java】SpringCloud整合Feign超时时间配置

解决方案

springcloud-api-order-service-impl 模块中加上如下配置配置 开启超时时间配置:

ribbon:

##指的是建立连接所用时间,适用于网络状态正常的情况下,两端连接所用的时间

ReadTimeout: 5000

##指的是建立连接后从服务器读取到可用资源时间

ConnectTimeout: 5000

【Java】SpringCloud整合Feign超时时间配置

重启order 服务再次访问
【Java】SpringCloud整合Feign超时时间配置

javaspringboot

阅读 44发布于 今天 06:49

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议


wulongbo

我的专栏

avatar

isWulongbo

在人生的头三十年,你培养习惯,后三十年,习惯铸就你

178 声望

8 粉丝

0 条评论

得票时间

avatar

isWulongbo

在人生的头三十年,你培养习惯,后三十年,习惯铸就你

178 声望

8 粉丝

宣传栏

前言

该项目基于 SpringCloud整合Feign调用重构 环境上演示。

模块构建

引入公共模块 springcloud-common

【Java】SpringCloud整合Feign超时时间配置

  • BaseApiService

package com.baba.wlb.base;

import lombok.Data;

import org.springframework.stereotype.Component;

@Data

@Component

public 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;

@Data

public 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依赖。

【Java】SpringCloud整合Feign超时时间配置

springcloud-api-member-service

新增测试接口 getUserInfo():

@RequestMapping("/getUserInfo")

BaseResponse getUserInfo();

【Java】SpringCloud整合Feign超时时间配置

springcloud-api-member-service-impl

实现类中对接口延迟1.5s操作:

@Override

public BaseResponse getUserInfo() {

try {

// 产生1.5s 的延迟

Thread.sleep(1500);

} catch (Exception e) {

e.printStackTrace();

}

return setResultSuccess("订单服务接口调用会员服务接口成功!");

}

【Java】SpringCloud整合Feign超时时间配置

springcloud-api-order-service-impl

订单模块调用会员模块:

@Override

@RequestMapping("/getUserInfoByMember")

public BaseResponse getUserInfoByMember() {

return memberServiceFeign.getUserInfo();

}

测试

启动 Eureka Server服务,以及订单和会员服务,并
浏览器访问 http://localhost:8200/getUserInfoByMember:
【Java】SpringCloud整合Feign超时时间配置
查看后台日志:发现报超时错误。
【Java】SpringCloud整合Feign超时时间配置

解决方案

springcloud-api-order-service-impl 模块中加上如下配置配置 开启超时时间配置:

ribbon:

##指的是建立连接所用时间,适用于网络状态正常的情况下,两端连接所用的时间

ReadTimeout: 5000

##指的是建立连接后从服务器读取到可用资源时间

ConnectTimeout: 5000

【Java】SpringCloud整合Feign超时时间配置

重启order 服务再次访问
【Java】SpringCloud整合Feign超时时间配置

以上是 【Java】SpringCloud整合Feign超时时间配置 的全部内容, 来源链接: utcz.com/a/108471.html

回到顶部