网上说在application.yml中配置ribbon超时时间就可以,
###设置feign客户端超时时间
###SpringCloud feign 默认开启支持ribbon
ribbon:
###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
ReadTimeout: 5000
###指的是建立连接后从服务器读取到可用资源所用的时间。
ConnectTimeout: 5000
但是配置完了之后一直还是超时的情况,想到可能是类似于RestTemplate方法没有将Ribbon应用于接口,于是在调用feign客户端的接口上加入了@LoadBalanced标签,之后在进行访问,访问成功。
基本项目配置如下,
package com.meiszl.MamberServiceImpl.Controller;
import com.meiszl.MemberService.Memberservice;
import com.meiszl.ResponseBase.ResponseBase;
import com.meiszl.common.BaseApiService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MemberServiceImpl extends BaseApiService implements Memberservice {
@Override
@RequestMapping("/test")
public String testEurekaClient() {
return "这是会员服务";
}
@Override
@RequestMapping("/find")
public ResponseBase getUserInfo() {
try {
//会员服务产生1.5秒延迟
Thread.sleep(1500);
}catch (Exception e){
}
return setResultSuccess("订单服务接口调用会员服务接口成功....");
}
}
order-service,
package com.meiszl.OrderService;
import com.meiszl.MemberService.Memberservice;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
@Component
@FeignClient(name = "APP-MEISZL-MEMBER")
public interface OrderService extends Memberservice {
}
order-service-controller,
package com.meiszl.OrderServiceImpl;
import com.meiszl.OrderService.OrderService;
import com.meiszl.ResponseBase.ResponseBase;
import com.meiszl.common.BaseApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrderServiceImpl implements OrderService{
@Autowired
private OrderService orderService;
@RequestMapping("/feignMember")
public String testEurekaClient(){
System.out.println("feign调用member");
return orderService.testEurekaClient();
}
@Override
@LoadBalanced
@RequestMapping("/orderToMember")
public ResponseBase getUserInfo() {
return orderService.getUserInfo();
}
}
order-service,application.yml,
server:
port: 8200
spring:
application:
name: testFeign
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8100/eureka/
register-with-eureka: true
fetch-registry: true
###设置feign客户端超时时间
###SpringCloud feign 默认开启支持ribbon
ribbon:
###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
ReadTimeout: 5000
###指的是建立连接后从服务器读取到可用资源所用的时间。
ConnectTimeout: 5000
代码已上传github,地址:https://github.com/meiszl/springCloud-test