1. 程式人生 > 實用技巧 >SpringCloud 整合 Naocs

SpringCloud 整合 Naocs

1: Nacos搭建可以參考 https://www.cnblogs.com/zhangXingSheng/p/13678173.html

SpringCloud 版本

 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Greenwich.SR2</version>
        <type>pom</type>
       <scope>import</scope>
</dependency>

Nacos pom

<!--配置中心pom-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${alibaba-nacos-config.version}</version>
        </dependency>

<!--服務發現pom-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${alibaba-nacos-discovery.version}</version>
        </dependency>

資料庫pom

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.conn.version}</version>
        </dependency>

order 專案 bootstrap.yml 配置

spring:
application:
name: order-server
profiles:
active: dev
cloud:
nacos:
config:
server-addr: 10.0.0.51:8848 # 配置中心nacos的地址
file-extension: yml # 配置檔案字尾(格式)
group: business-app # 分組名稱
namespace: ${spring.profiles.active} # 命令空間,可以用來區分不同的環境
discovery:
server-addr: 10.0.0.51:8848 # 服務發現地址nacos的地
namespace: ${spring.profiles.active}


server:
port: 8056

在 Nacos的控制檯左側找到名稱空間的選單,新增名稱空間

名稱空間id : dev

名稱空間名稱: dev

描述:開發環境

配置中心功能-測試

在配置管理-》配置列表右側,找到 + 的標誌,點選後新增配置

將yml 中的配置添入進去

之所以需要配置 spring.application.name ,是因為它是構成 Nacos 配置管理 dataId欄位的一部分。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix 預設為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix來配置。
spring.profiles.active 即為當前環境對應的 profile,詳情可以參考 Spring Boot文件。 注意:當 spring.profiles.active 為空時,對應的連線符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
file-exetension 為配置內容的資料格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支援 properties 和 yaml 型別。

上面配置好後,可以啟動專案

啟動日誌:

                                                  Ignore the empty nacos configuration and get it based on dataId[order-server.yml] & group[business-app]
2020-09-16 14:05:07.053  WARN 27342 --- [           main] c.a.c.n.c.NacosPropertySourceBuilder     : Ignore the empty nacos configuration and get it based on dataId[order-server-dev.yml] & group[business-app]
2020-09-16 14:05:07.053  INFO 27342 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='order-server-dev.yml,business-app'}, NacosPropertySource {name='order-server.yml,business-app'}, NacosPropertySource {name='order-server,business-app'}]}
2020-09-16 14:05:07.077  INFO 27342 --- [           main] com.order.OrderApplication               : The following profiles are active: dev

從日誌可以看到他會從nacos上匹配 based on dataId[order-server-dev.yml] & group[business-app] 和 [order-server.yml] & group[business-app] 配置檔案。並且專案也是啟動成功的,因為專案中加入了資料庫的pom,如果沒有獲取到配置會啟動失敗。

服務發現功能-測試

按照上面yml 中的配置,啟動後在服務列表中看到我們的專案

按照上面的配置,再建立一個專案 account-server ,注意修改新專案的spring.application.name

在order 專案的pom中新增feign 配置

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

測試使用者下單成功後,扣減帳戶錢。order 呼叫 account 服務,使用feign,跟一般的feign使用一樣。 啟動account服務