一.介紹
feign是聲明式的web service客戶端,它讓微服務之間的調用變得更簡單了,類似controller調用service。Spring Cloud集成了Ribbon和Eureka,可在使用Feign時提供負載均衡的http客戶端。原理可能很多,但是用起來其實並不是那麼複雜。
二.集成操作
- 依賴添加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
-
關鍵註解添加
-
調用接口添加
被調用方代碼:
@Slf4j
@RestController
@RequestMapping(value = "/eureka-client/feign")
public class FeignEurekaController
{
/**
* feign調用信息獲取
*
* @return
* @exception
* @date 2020/5/7 10:17
*/
@GetMapping(value = "/info")
public ResultVO<?> feignInfo()
{
log.info("FeignController|feignInfo|通過FEIGN調用方式獲取數據");
return new ResultVO<>("200", "SUCCESS");
}
}
調用方代碼:
public ResultVO<?> feignInfo()
{
log.info("EurekaClientService|feignInfo|信息獲取");
ResultVO<?> resultVO = this.eurekaClientFeign.feignInfo();
log.info("EurekaClientService|feignInfo|信息獲取|請求出參:={}", resultVO);
return resultVO;
}
- 調用結果
成功調用到被調用方服務!!!
三.補充
如何查看調用接口具體響應時長、路徑、請求頭等信息,好協助自己優化接口,看下面代碼有詳細說明:
@Configuration
public class FeignClientConfiguration
{
/**
* Logger.Level 的具體級別如下:
* NONE:不記錄任何信息
* BASIC:僅記錄請求方法、URL以及響應狀態碼和執行時間
* HEADERS:除了記錄 BASIC級別的信息外,還會記錄請求和響應的頭信息
* FULL:記錄所有請求與響應的明細,包括頭信息、請求體、元數據
*/
@Bean
feign.Logger.Level feignLoggerLevel()
{
return feign.Logger.Level.FULL;
}
}
Feign的調用方式我目前用到兩種:
- 一種是“服務名調用”
@FeignClient(value="qyeurekaclient", fallbackFactory = EurekaClientFallback.class, configuration = {FeignClientConfiguration.class})
- 第二種“Url路徑調用”
@FeignClient(name = "github-client", url = "https://ip:port", allbackFactory = EurekaClientFallback.class, configuration = {FeignClientConfiguration.class})
至此,Feign服務集成完畢!!!
微服務項目:微服務集成項目