我是靠谱客的博主 迅速啤酒,最近开发中收集的这篇文章主要介绍《springcloud学习》 十三 feign 超时时间设置1.业务描述2.代码3.效果,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
关于雪崩效应:
默认情况下tomcat只有一个线程去处理客户端发送的所有请求。高并发情况下,如果客户端请求都在同一接口,tomcat的所有线程池去处理,导致其他接口服务访问不了,等待。
Tomcat有个线程池,每个线程去处理客户端发送每次请求。
1.业务描述
订单服务调用会员服务,服务服务处理逻辑代码中延迟1.5s,模拟处理业务逻辑
2.代码
2.1会员服务
package com.fqyd.api.service.impl;
import com.fqyd.api.entity.User;
import com.fqyd.api.service.IMemberService;
import com.fqyd.util.BaseApiService;
import com.fqyd.util.BaseDataResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Description:
* Author: wude
* Date: 2019/7/25 15:36
* Modified By:
*/
@RestController
public class MemberServiceImpl extends BaseApiService implements IMemberService {
@RequestMapping("getUserInfo")
@Override
public BaseDataResult getUserInfo() {
try {
//延迟1.5s
Thread.sleep(1500);
} catch (Exception e) {
}
return setResultSuccess("订单服务调用会员接口成功...");
}
}
package com.fqyd.util;
/**
* Description:
* Author: wude
* Date: 2019/8/6 12:01
* Modified By:
*/
public class BaseApiService {
public BaseDataResult setResultErr(Integer code,String msg){
return setResult(code,msg,null);
}
/**
* 返回错误,可以传msg
* @param msg
* @return
*/
public BaseDataResult setResultError(String msg){
return setResult(500,msg,null);
}
/**
* 返回成功,可以穿data
* @param data
* @return
*/
public BaseDataResult setResultSuccess(Object data){
return setResult(200,"处理成功",data);
}
/**
* 返回成功,没有data值
* @return
*/
public BaseDataResult setResultSuccess(){
return setResult(200,"处理成功",null);
}
public BaseDataResult setResultSuccess(String msg){
return setResult(200,msg,null);
}
public BaseDataResult setResult(Integer code,String msg,Object data){
return new BaseDataResult(code,msg,data);
}
}
package com.fqyd.api.service;
import com.fqyd.api.entity.User;
import com.fqyd.util.BaseDataResult;
import com.sun.xml.internal.org.jvnet.staxex.Base64Data;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* Description:
* Author: wude
* Date: 2019/7/25 14:58
* Modified By:
*/
@FeignClient("fqyd-member")
public interface IMemberService {
/**
* 获取会员信息
* @param name
* @return
*/
@RequestMapping("getMember")
public User getMember(@RequestParam("name") String name);
@RequestMapping("/getUserInfo")
public BaseDataResult getUserInfo();
}
fqyd-member会员服务的服务名
2.2订单服务
package com.fqyd.api.feign;
import com.fqyd.api.entity.User;
import com.fqyd.api.service.IMemberService;
import org.springframework.cloud.openfeign.FeignClient;
/**
* Description:
* Author: wude
* Date: 2019/8/1 10:35
* Modified By:
*/
@FeignClient("fqyd-member")
public interface MemberServiceFeign extends IMemberService {
}
package com.fqyd.api.service.impl;
import com.fqyd.api.entity.User;
import com.fqyd.api.feign.MemberServiceFeign;
import com.fqyd.api.service.IOrderService;
import com.fqyd.util.BaseDataResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Description:
* Author: wude
* Date: 2019/7/25 17:39
* Modified By:
*/
@RestController
public class OrderServiceImpl implements IOrderService {
@Autowired
private MemberServiceFeign memberServiceFeign;
@RequestMapping("/orderToMemberUserInfo")
@Override
public BaseDataResult orderToMemberUserInfo() {
return memberServiceFeign.getUserInfo();
}
}
3.效果
项目中有依赖关系,建议下载源码。
http://localhost:8020/orderToMemberUserInfo
read time读取超时
解决方法:application.yml增加如下配置
#ribbon的超时时间
ribbon:
ReadTimeout: 3000
ConnectTimeout: 3000
因为feign默认时间是1s,配置成3秒后就解决了该问题
欢迎关注公众号,免费领取各种学习视频,学习相关java各个技术点面试知识,有相关学习疑问或者面试困惑,也可以通过公众号私信博主
最后
以上就是迅速啤酒为你收集整理的《springcloud学习》 十三 feign 超时时间设置1.业务描述2.代码3.效果的全部内容,希望文章能够帮你解决《springcloud学习》 十三 feign 超时时间设置1.业务描述2.代码3.效果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复