開發與維運

構建微服務項目 | 帶你讀《Spring Cloud Alibaba(2019)》之六

本文來自於《精通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服務註冊 服務名稱是否 有下劃線?
在微服務架構中服務的名稱命名不能夠有下劃線。

Leave a Reply

Your email address will not be published. Required fields are marked *