spring cloud feign 常見問題解決辦法

一、第一次訪問失敗緣由   

     通常首次訪問都會比較慢,由於spring的懶加載機制,須要實例化一些類。hystrix默認的超時時間爲1秒,超事後,就會調用fallback代碼。解決方案有一下三種:spring

1.一、加大hystrix的超時時間

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 100000

1.二、禁用hystrix超時時間

hystrix.command.default.execution.timeout.enabled: false

1.三、禁用feign的hystrix(不推薦)

feign.hystrix.enabled: false

二、client(消費者)啓動失敗緣由

    消費者通常和api接口定義不在一個package下,致使啓動失敗。解決辦法引入api的package:apache

@SpringBootApplication(scanBasePackages= {"com.api"})
@EnableFeignClients(basePackages={"com.api"})

三、使用@RequestParam, @RequestBody 時須要注意的

請參考https://my.oschina.net/u/182501/blog/1532081。api

四、Feign使用http client

     Feign在默認狀況下使用的是JDK原生的URLConnection發送HTTP請求,沒有鏈接池,可是對每一個地址會保持一個長鏈接,即利用HTTP的persistence connection 。咱們能夠用Apache的HTTP Client替換Feign原始的http client, 從而獲取鏈接池、超時時間等與性能息息相關的控制能力。Spring Cloud從Brixtion.SR5版本開始支持這種替換,首先在項目中聲明Apache HTTP Client和feign-httpclient依賴:app

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>${httpclient.version}</version>
</dependency>
<dependency>
	<groupId>com.netflix.feign</groupId>
	<artifactId>feign-httpclient</artifactId>
	<version>${feign-httpclient.version}</version>
</dependency>

    配置application.yml性能

feign: 
  httpclient:
    enabled: true #啓用httpclient
相關文章
相關標籤/搜索