Spring Cloud 學習 - Nacos服務發現之Feign方式調用

Spring Cloud 學習 - Nacos服務發現之Feign方式調用

上一篇,我們介紹了 Spring Cloud 學習 - Nacos服務註冊與發現 ,使用了RestTemplate進行簡單調用,Ribbon作負載均衡。

RestTemplate調用看起來不夠優雅,這一篇,我們來看一下Feign優雅調用方式。

主要版本

本文使用的相關技術主要依賴版本如下:

Spring Cloud Spring Cloud Alibaba Spring Boot
Hoxton.SR3 2.2.0.RELEASE 2.2.5.RELEASE

好了,開始整合。

服務提供者,我們使用上一篇的spring-cloud-alibaba-provider服務,代碼不做修改。詳細請查看 Spring Cloud 學習 - Nacos服務註冊與發現

主要依賴

添加openfeignnacos-discovery依賴,web提供對外接口

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

添加配置

server:
  port: 8080
spring:
  application:
    name: cloud-alibaba-feign-consumer
  cloud:
    nacos:
      server-addr: localhost:8848

啓用註解

  • @EnableFeignClients 啓用FeignClient功能
  • @EnableDiscoveryClient 開啓服務發現
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients 
public class AliFeignConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(AliFeignConsumerApplication.class, args);
    }
}

編寫Client

@FeignClient("cloud-alibaba-provider"),value爲調用的服務提供者名稱,即服務提供者的${spring.application.name}的值。

這裏要特別注意下:FeignClient裏的@PathVariable("name")裏的name不能省略默認,否則會報異常。這一點和Controller裏不一致,Controller裏的可以省略默認。

@FeignClient("cloud-alibaba-provider")
public interface HelloFeignClient {
    /**
     * Hello, ${name}!
     * @param name
     * @return
     */
    @GetMapping("/{name}")
    String hello(@PathVariable("name") String name);
}

測試訪問

啓動Nacos

啓動服務註冊中心Nacos
在這裏插入圖片描述

啓動服務提供者

啓動2個服務提供者spring-cloud-alibaba-provider,端口分別爲8081和8082:
多個啓動可以在控制檯指定端口進行啓動,也可以在IDEA中複製啓動配置,修改端口啓動。

命令行啓動方式如下:

java -jar yourapp.jar --server.port=8080

啓動服務消費者

啓動服務消費者spring-cloud-alibaba-feign-consumer

訪問測試

使用curl命令行調用結果:
GiJBGD.md.png

因個人能力有限,文中如有不足或錯誤之處,歡迎指正,感謝~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章