Open Feign使用方法、等待時間、日誌列印功能
openFeign是一個宣告式的web服務客戶端,讓編寫web服務客戶端變得非常容易,只需要建立一個介面並在介面上新增註解即可。
openFeign整合了Ribbon
使用openFeign步驟
**一、**建module。引入pom.xml中openFeign的依賴
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
**二、**yml常規配置即可
server:
port: 80
eureka:
client:
register-with-eureka: true
fetchRegistry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
**三、**主啟動加入@EnableFeignClients //使用feign啟用並開啟
@SpringBootApplication
@EnableFeignClients //使用feign啟用並開啟
public class OrderFeignMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderFeignMain80.class,args);
}
}
**四、**建介面用來呼叫payment介面上加入@FeignClient註解
@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService {
@GetMapping(value = "/payment/get/{id}")
public CommonResult getPaymentById(@PathVariable("id") Long id);
@GetMapping(value = "/payment/feign/timeout")
public String paymentFeignTimeout();
}
其中@FeignClient(value = “CLOUD-PAYMENT-SERVICE”)
value是payment的spring:
application:
name:名稱
eureka中的Application
五、控制層
@RestController
@Slf4j
public class OrderFeignController {
@Resource
private PaymentFeignService paymentFeignService;
@GetMapping(value = "/consumer/payment/get/{id}")
public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id){
return paymentFeignService.getPaymentById(id);
}
@GetMapping(value = "/payment/feign/timeout")
public String paymentFeignTimeout(){
//openfeign---ribbon,客戶端一般預設等待一秒鐘
return paymentFeignService.paymentFeignTimeout();
}
}
payment中
@GetMapping(value = "/payment/feign/timeout")
public String paymentFeignTimeout(){
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
return serverPort;
}
啟動即可呼叫/payment/feign/timeout 不出意外會報錯因為openFeign預設等待1秒鐘超過後報錯,
解決辦法:yml檔案中加入
#設定feign客戶端超時時間(openFeign預設支援ribbon)
ribbon:
#指的是建立連線所用的時間,適用於網路狀況是正常的情況,兩端連線所用的時間
ReadTimeout: 5000
#指的是建立連線之後從伺服器讀取到可用資源所用的時間
ConnectTimeout: 5000
來更改openFeign預設等待時間
openFeign日誌列印功能
feign提供了日誌列印功能,可以通過配置來調整日誌級別,從而瞭解Feign中HTTP請求的細節
日誌級別有一下四個:
none:預設的,不顯示任何日誌
basic:僅記錄請求方法,URL響應狀態碼,及執行時間
headers:除了basic中定義的資訊之外還有請求和響應頭資訊
full:除了headers中定義的資訊之外,還有請求和響應的正文及後設資料
具體配置如下:
一、 新建配置類FeignConfig
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
二、yml檔案
logging:
level:
#feogn日誌以什麼級別監視那個介面
com.zhutianlu.springcloud.service.PaymentFeignService: debug
其中com.zhutianlu.springcloud.service.PaymentFeignService為監控介面的全路徑
相關文章
- feign配置日誌不列印
- 【Spring】日誌列印sql,日誌配置列印sqlSpringSQL
- 日誌列印
- open feign 呼叫超時與重試
- 日誌--列印規範
- Log 工具列印日誌
- Unity——日誌列印工具Unity
- 列印日誌時為什麼要使用isDebugEnabled 、isInfoEnabled
- 39,日誌列印sql 配置SQL
- MySQL列印死鎖日誌MySql
- 日誌到底該如何列印?
- Linux動態列印kernel日誌Linux
- 設定mybatis 是否列印日誌MyBatis
- java日誌列印使用指南Java
- Oracle歸檔日誌所在目錄時間不對&&Oracle叢集日誌時間顯示錯誤Oracle
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- python通過TimedRotatingFileHandler按時間切割日誌Python
- Flutter - 列印好用的Debug日誌Flutter
- 【工具】方法日誌列印+任務切片
- 解決Kafka消費者啟動時頻繁列印日誌Kafka
- java 日誌脫敏框架 sensitive,優雅的列印脫敏日誌Java框架
- MySQL 8.0.18 錯誤日誌時間慢了8個小時MySql
- Apache 記錄請求響應時間日誌Apache
- python 使用 loguru 輸出異常日誌同時列印變數值Python變數
- WinAppDriver 等待時間設定技巧APP
- python logger 列印日誌錯誤行數Python
- SpringBoot自定義註解、AOP列印日誌Spring Boot
- 日誌列印的碎碎念總結
- Python 日誌列印之自定義logger handlerPython
- 日誌-log4j2基於AsyncLogger的非同步日誌列印非同步
- 日誌-log4j2基於AsyncAppender的非同步日誌列印APP非同步
- mysql5.7日誌時間與系統時間不一致MySql
- 定時將系統時間更新在日誌檔案中
- Flutter實戰之自定義日誌列印元件Flutter元件
- 關閉Druid中某些錯誤日誌列印UI
- 微服務開發系列:如何列印好日誌微服務
- @軟考生,准考證列印時間已出,請及時列印
- MyBatis列印SQL執行時間MyBatisSQL