本文來自於《精通Spring Cloud Alibaba》課程的整理,講師為餘勝軍,點擊查看視頻內容。
本文系志願者整理,供配合學習中心課程使用,不做商業用途。
OpenFeign客戶端
OpenFeign是一個Web聲明式的Http客戶端調用工具,提供接口和註解形式調用。
SpringCloud第一代採用feign第二代採用openfeign
openfeign客戶端作用:是一個Web聲明式的Http客戶端遠程調用工具,底層是封裝HttpClient技術。
Openfeign屬於SPringleCloud自己研發,而feign是netflix代碼寫法幾乎是沒有任何變化。
構建微服務項目
mayikt-opefeign-parent---父工程
---mayikt-service-api----微服務Api接口層,定義了接口沒有任何代碼的業務實現
----mayikt-member-service-api---會員提供開放接口
----mayikt-order-service-api---訂單提供開放接口
---mayikt-service-impl----微服務Api實現層
----mayikt-member-service-impl---會員實現層
----mayikt-order-service-api---訂單實現層
微服務架構基本樣式,最大的優點能夠對我們feign實現複用機制。
Maven依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<!-- springboot 整合web組件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
</dependencies>
會員服務接口
public interface MemberService {
/**
* 提供會員接口
*
* @param userId
* @return
*/
@GetMapping("/getUser")
String getUser(@RequestParam("userId") Long userId);
}
@RestController
public class MemberServiceImpl implements MemberService {
@Value("${server.port}")
private String serverPort;
@Override
public String getUser(Long userId) {
return "我是會員服務端口號為:" + serverPort;
}
}
訂單服務
@RestController
public class OrderService {
@Autowired
private MemberServiceFeign memberServiceFeign;
/**
* 訂單調用會員
*
* @return
*/
@GetMapping("/orderToMember")
public String orderToMember() {
String result = memberServiceFeign.getUser(10L);
return "我是訂單服務,調用會員服務接口返回結果:" + result;
}
}
@FeignClient(name = "meitemayikt-member")
public interface MemberServiceFeign extends MemberService {
// /**
// * 提供會員接口
// *
// * @param userId
// * @return
// */
// @GetMapping("/getUser")
// String getUser(@RequestParam("userId") Long userId);
}
注意feign客戶端調用的事項:
如果請求參數沒有加上註解的話,默認採用post請求發送。
Openfeign默認是支持負載均衡,ribbon。
Nacos服務註冊 服務名稱是否 有下劃線?
在微服務架構中服務的名稱命名不能夠有下劃線。