关于SpringBoot2.0以及SpringCloud Finchley.M7版本的ribbon配置Feign客户端超时时间踩坑记录

解决Ribbon配置超时问题
博客讲述在application.yml中配置ribbon超时时间后仍超时的问题。推测是RestTemplate方法未将Ribbon应用于接口,在调用feign客户端接口上加@LoadBalanced标签后访问成功,还给出基本项目配置,代码已上传至github。

网上说在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值