- 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頁面檢視是否註冊成功
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.測試
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