feign 使用


feign 是netflix 提供的申明式的httpclient調用框架

整合方法

1.添加依賴

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.在application 添加注解

@EnableFeignClients

 

 3.編寫調用代碼

@FeignClient(name = "jpaas-form")
public interface FormClient {

    /**
     * 根據表單別名獲取表單相關數據。
     * @param alias
     * @param pk
     * @param initPermission
     * @return
     */
    @GetMapping("/form/core/formPc/getByAlias")
    JsonResult<BpmView> getByAlias(@RequestParam(value = "alias") String alias,
                                          @RequestParam(value = "pk")String pk,
                                          @RequestParam(value = "initPermission") Boolean initPermission);

1.添加一個接口類。

2.增加@FeignClient 注解 

  name 指向需要調用的 微服務名稱

3.增加調用方法

  遵循 mvc的寫法,如果返回的數據是一個java對象,最好把這個實體做成公共的類,供被調用者和調用者進行使用。

 

@GetMapping("/users/{id}")
    UserDTO findById(@PathVariable Integer id);

方法示例,和spring mvc 差不多。

 

4.自定義FEIGN日志級別

feign 日志級別,就是需要打印feign的調用參數和響應數據。

 

 使用java代碼來實現。

1.編寫配置類

import feign.Logger;
import org.springframework.context.annotation.Bean;

public class UserCenterFeignClientConfig {

    @Bean
    public Logger.Level level(){
        return  Logger.Level.FULL;
    }
}

2.feign client 類指定配置

@FeignClient(name = "user-center",
//    fallback = UserCenterFeignClientFallback.class,
//    fallbackFactory = UserCenterFeignClientFallbackFactory.class,
        configuration = UserCenterFeignClientConfig.class
)
public interface UserCenterFeignClient {

3.在日志中進行指定

編輯 application.yml

logging:
  level:
    com.demo.contentcenter.feignclient.UserCenterFeignClient: debug

 注意這個日志界別需要為 debug 級別,只有在debug模式才會輸出feign日志。

 

4. feign 多參數請求實現

請參考文章

http://www.imooc.com/article/289000

5.使用 feign 訪問非 注冊服務數據

有些情況下,我們使用feign 訪問外部url,比如訪問 博客網首頁。

編寫代碼:

@FeignClient(name = "cnblogs", url = "https://www.cnblogs.com")
public interface ExternalFeignClient {
@GetMapping("/yg_zhang")
String index();
}

這里需要指定 name 和URL地址。

 

6.性能優化

配置啟用http連接池:

<dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
            <version>10.2.3</version>
        </dependency>

修改 application.yml

feign:
  client:
    config:
      # 全局配置
      default:
        loggerLevel: basic

  httpclient:
    enabled: true
    max-connections: 200
    max-connections-per-route: 50

 7.feign 的常見問題

http://www.imooc.com/article/289005


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM