2016-06-28 102 views
1

當使用FeignClient使用在SQL Server中執行查詢的服務時,我的應用程序正在收到錯誤。如何解決超時FeignClient

錯誤:

Exception in thread "pool-10-thread-14" feign.RetryableException: Read timed out executing GET http://127.0.0.1:8876/processoData/search/buscaProcessoPorCliente?cliente=ELEKTRO+-+TRABALHISTA&estado=SP

我的消費服務:

@FeignClient(url="http://127.0.0.1:8876") 
public interface ProcessoConsumer { 

@RequestMapping(method = RequestMethod.GET, value = "/processoData/search/buscaProcessoPorCliente?cliente={cliente}&estado={estado}") 
public PagedResources<ProcessoDTO> buscaProcessoClienteEstado(@PathVariable("cliente") String cliente, @PathVariable("estado") String estado); 

} 

我陽明:

server: 
    port: 8874 

endpoints: 
    restart: 
    enabled: true 
    shutdown: 
    enabled: true 
    health: 
    sensitive: false 

eureka: 
    client: 
    serviceUrl: 
    defaultZone: ${vcap.services.eureka-service.credentials.uri:http://xxx.xx.xxx.xx:8764}/eureka/ 
    instance: 
    preferIpAddress: true 

ribbon: 
    eureka: 
    enabled: true 

spring: 
    application: 
    name: MyApplication 
    data: 
    mongodb: 
     host: xxx.xx.xxx.xx 
     port: 27017 
     uri: mongodb://xxx.xx.xxx.xx/recortesExtrator 
     repositories.enabled: true 
    solr: 
     host: http://xxx.xx.xxx.xx:8983/solr 
     repositories.enabled: true 

有誰知道如何解決這個問題?

感謝。

+0

嘿雷南,之後你會得到一個超時錯誤和多久到後端的呼叫通常需要? –

+0

爲什麼你的費恩客戶說端口8876,但你的YML配置說端口8874? – psantamaria

回答

0
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=6000 
ribbon.ReadTimeout=60000 
ribbon.ConnectTimeout=60000 

確保色帶的超時比椎

+0

反之亦然: 「使用包裝Ribbon客戶端的Hystrix命令時,如果希望確保Hystrix超時配置爲超過配置的功能區超時(包括可能發生的任何潛在重試次數),例如if您的功能區連接超時時間爲1秒,並且功能區客戶端可能會重試該請求三次,而您的Hystrix超時應稍微超過三秒。「 https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_hystrix_timeouts_and_ribbon_clients –

0

恰好碰到了這個問題,也是更大的。正如@spencergibb所示,這裏是我正在使用的解決方法。請參閱link

將這些添加到application.properties中。

# Disable Hystrix timeout globally (for all services) 
hystrix.command.default.execution.timeout.enabled: false 

# Increase the Hystrix timeout to 60s (globally) 
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000 

將此項添加到Java配置類中。

import feign.Request; 

@Configuration 
@EnableDiscoveryClient 
@EnableFeignClients(basePackageClasses = { ServiceFeignClient.class }) 
@ComponentScan(basePackageClasses = { ServiceFeignClient.class }) 
public class FeignConfig { 

    /** 
    * Method to create a bean to increase the timeout value, 
    * It is used to overcome the Retryable exception while invoking the feign client. 
    * @param env, 
    *   An {@link ConfigurableEnvironment} 
    * @return A {@link Request} 
    */ 
    @Bean 
    public static Request.Options requestOptions(ConfigurableEnvironment env) { 
     int ribbonReadTimeout = env.getProperty("ribbon.ReadTimeout", int.class, 70000); 
     int ribbonConnectionTimeout = env.getProperty("ribbon.ConnectTimeout", int.class, 60000); 

     return new Request.Options(ribbonConnectionTimeout, ribbonReadTimeout); 
    } 
} 
-1

在application.properties添加這些

feign.hystrix.enabled=true hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000

相關問題