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
- Unity——日誌列印工具Unity
- 日誌--列印規範
- Log 工具列印日誌
- 39,日誌列印sql 配置SQL
- MySQL列印死鎖日誌MySql
- 日誌到底該如何列印?
- mybatis列印sql日誌配置MyBatisSQL
- 列印日誌時為什麼要使用isDebugEnabled 、isInfoEnabled
- percona server 日誌時間不正確Server
- 日誌管理程式時間訂製版
- java日誌列印使用指南Java
- Tornado按天列印日誌
- 設定mybatis 是否列印日誌MyBatis
- Oracle歸檔日誌所在目錄時間不對&&Oracle叢集日誌時間顯示錯誤Oracle
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- 解決Kafka消費者啟動時頻繁列印日誌Kafka
- Oracle redo 日誌切換時間頻率Oracle Redo
- 【工具】方法日誌列印+任務切片
- Linux動態列印kernel日誌Linux
- 【MySQL】慢查詢日誌不列印MySql
- 【等待時間】asynch descriptor resize
- Nginx訪問日誌、Nginx日誌切割、靜態檔案不記錄日誌和過期時間Nginx
- 分析24小時日誌獲取交易時間分佈
- java 日誌脫敏框架 sensitive,優雅的列印脫敏日誌Java框架
- Apache 記錄請求響應時間日誌Apache
- Flutter - 列印好用的Debug日誌Flutter
- 日誌列印的碎碎念總結
- Object-C使用NSLog列印日誌Object
- mysql5.7日誌時間與系統時間不一致MySql
- MySQL 8.0.18 錯誤日誌時間慢了8個小時MySql
- 定時將系統時間更新在日誌檔案中
- 日誌分析logmnr (Logminer) 使用方法
- weblogic日誌報錯too many open filesWeb
- 基於事務日誌還原到時間點
- rman 刪除指定時間點的歸檔日誌