微服務Spring Cloud—Feign簡介和為服務消費者整合
阿新 • • 發佈:2018-11-07
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微服務架構實戰》