SpringCloud(3)-OpenFeign相關配置

marigo發表於2024-05-19
  • OpenFeign 是個宣告式 WebService 客戶端,使用 OpenFeign 讓編寫 Web Service 客戶端更簡單。
  • Spring Cloud 對 OpenFeign 進 行 了 封 裝 使 其 支 持 了 Spring MVC 標 準 注 解 和
    HttpMessageConverters。
  • OpenFeign 可以與 Eureka 和 Ribbon 組合使用以支援負載均衡。

1.配置 pom.xml

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

引入openfeign的依賴

2.配置application.yml

server:
  port: 80

spring:
  application:
    name: member-service-consumer-openfeign

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka9001.com:9001/eureka,http://eureka9002.com:9002/eureka

3.配置啟動類

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class MemberConsumerOpenfeignApplication80 {
    public static void main(String[] args) {
        SpringApplication.run(MemberConsumerOpenfeignApplication80.class, args);
    }
}

4.測試

啟動後,到eureka頁面檢視是否註冊成功
image.png

5.配置Service介面

@Component  
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")  
public interface MemberFeignService {  
    /**  
     * 遠端呼叫的方法  
     * url: http://MEMBER-SERVICE-PROVIDER/member/get/{id}  
     * OpenFeign 會根據 url 去找 MEMBER-SERVICE-PROVIDER 服務,使用內建的負責均衡演算法  
     */  
    @GetMapping("/member/get/{id}")  
    public Result<Member> getMemberById(@PathVariable("id") Long id);  
}

6.配置Controller實現方法

@RestController  
public class MemberConsumerFeignController {  
    @Resource  
    private MemberFeignService memberFeignService;  
  
    // 遠端呼叫  
    @GetMapping("/member/consumer/openfeign/get/{id}")  
    public Result<Member> getMemberById(@PathVariable("id") Long id) {  
        return memberFeignService.getMemberById(id);  
    }  
}

7.測試

image.png

8.日誌配置

Feign 提供了日誌列印功能,可以透過配置來調整日誌級別,從而對 Feign 介面的呼叫情況進行監控和輸出:

  • NONE∶預設的,不顯示任何日誌
  • BASIC∶僅記錄請求方法、URL、響應狀態碼及執行時間;
  • HEADERS∶除了 BASIC中定義的資訊之外,還有請求和響應的頭資訊;
  • FULL∶除了HEADERS中定義的資訊之外,還有請求和響應的正文及後設資料。

8.1 OpenConfig配置類

設定日誌等級,注意Logger引入的依賴是feign

@Configuration
public class OpenFeignConfig {
    @Bean
    Logger.Level logLevel() {
        return Logger.Level.FULL;
    }
}

8.2 application.yml 配置

logging:
  level:
    #對 MemberFeignService 介面呼叫過程 列印的日誌資訊-debug 級別[error, warn, info, debug, trace]
    com.atguigu.springcloud.service: debug

9.OpenFeign超時配置

application.yml

ribbon:
  #設定 feign 客戶端超時時間,指的是建立連線後從伺服器讀取到可用資源所用的時間,
  ReadTimeout: 6000
  #指的是建立連線所用的時間,適用於網路狀況正常的情況下,兩端連線所用的時間
  ConnectTimeout: 6000

相關文章