1. 程式人生 > >微服務Spring Cloud—Feign簡介和為服務消費者整合

微服務Spring Cloud—Feign簡介和為服務消費者整合

Feign簡介

Feign是Netflix開發的宣告式、模組化的HTTP客戶端,其靈感來自Retrofit、JAXRS-2.0以及WebSocket。Feign可幫組我們更加便捷、優雅的呼叫HTTP API。

在Spring Cloud中,使用Feign非常簡單——建立一個介面,並在介面上新增一些註解,程式碼就完成了。Feign支援多種註解,例如Feign自帶的註解或者JAX-RS註解等。

Spring Cloud對feign進行了增強,使Feign支援了Spring MVC註解,並整合了Ribbon和Eureka,從而讓Feign的使用更加便捷。

為服務消費者整合Feign

1.複製專案mcroservice-consumer-movie,將ArtifactId修改為microservice-consumer-movie-feign。

2.新增Feign依賴。

	<dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-openfeign</artifactId>
    	<version>2.0.2.RELEASE</version>
</dependency>

3.建立一個Feign介面,並新增@FeignClient註解。

@FeignClient(name="users")
public interface UserFeignClient {
    @RequestMapping(value ="/{id}",method = RequestMethod.GET)
    public User findById(@PathVariable("id") Long id);
}

@FeignClient註解中的users是一個任意客戶端名稱,浴室建立Ribbon負載均衡器,由於使用了Eureka,所以Ribbon會把users解析成Eureka Server服務登錄檔內的服務。當然,如果不想使用Eureka,可使用service.ribbon.listOfServers屬性配置伺服器列表。

4.修改Controller,讓其呼叫Feign介面

    @Autowired
    private UserFeignClient userFeignClient;

    @GetMapping("/user/{id}")
    public User findById(@PathVariable Long id){
        return this.userFeignClient.findById(id);
    }

5.修改啟動類,新增@EnableFeignClients註解

@EnableEurekaClient
@SpringBootApplication
@EnableFeignClients
public class ConsumerMovieApplication {
    @Bean
    public RestTemplate restTemplate() { return new RestTemplate(); }
    public static void main(String[] args) {
        SpringApplication.run(ConsumerMovieApplication.class, args);
    }
}

測試

1.啟動microservice-discovery-eureka。
2.啟動2個或者多個microservice-provider-user示例。
3.多次訪問http://localhost:8010/user/1,返回如下結果。
在這裡插入圖片描述

兩個微服務列印如下日誌
在這裡插入圖片描述

本文大部分內容轉載自周立的《Spring Cloud與Docker微服務架構實戰》