天天看點

spring-cloud之fegin

fegin它是用來做微服務之間的服務調用的,在使用fegin的時候直接調用微服務名稱,fegin會去注冊中心清單擷取微服務,在擷取到微服務之後,根據rebbion政策進行調用微服務,這邊直接做具體實作了。

導入jar:

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

啟動類添加fegin使用注解:

@EnableEurekaClient
@SpringBootApplication
@EnableFeignClients //使用@feign
public class ConsumeFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumeFeignApplication.class, args);
    }
}

           

建立service服務使用fegin調用其他的微服務

@FeignClient(value = "servce-feign",configuration = FeignClientsConfiguration.class,fallback = FeignServiceImpl.class)
public interface FeignService {
    @GetMapping("/order/getOrder")
    public Map<String,Object> getOrder(@RequestParam("id") Integer id);

    @PostMapping("/order/updateOrder")
    public OrderEntity updateOrder(@RequestBody OrderEntity orderEntity);

}
           

@FeignClient中value是調用那個微服務的名稱,configuration 使用那個配置這裡我們使用預設配置,這樣我們的feign使用就算是完成了,我們可以通過控制層直接調用FeignService就可以看到具體效果了。

feign在調用的使用如何輸出日志:

在feign的預設配置中它的日志級别為NONE不輸出日志,這樣不友善我們日常問題的排查,我們可以重寫feign的日志方法:

@Configuration
public class FeignConfigure {

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

}
           

配置不同的日志級别:

NONE :不記錄任何日志(預設)

BASIC:僅記錄請求方法、URL、響應狀态代碼以及執行時間

HEADERS:記錄BASIC級别的基礎上,記錄請求和響應的header

FULL:記錄請求和響應的header,body和中繼資料

同時我們需要在yml中添加配置:

logging:
  level:
    #控制FeignClient的日志輸出,指向的是你需要輸出日志的feign接口服務
     com.study.service.FeignService: DEBUG
           

最後我們修改@FeignClient中configuration配置中指向的配置類就可以了。