spring使用阿里的nacos作爲服務註冊中心,使用feign消費服務

首先windows環境下,安裝下載nacos,下載地址:https://github.com/alibaba/nacos/releases/tag/1.1.0

解壓到任意一個你覺得開心的文件夾,然後啓動,如下圖

雙擊啓動成功以後如圖:

訪問:http://127.0.0.1:8848/nacos/    , 輸入用戶名,密碼  nacos,nacos

登錄成功的頁面

 

分割線-------------------------------------------------------------------------nacos安裝完畢,開始建工程

首先創建一個maven的web-app項目,在此項目下,新建兩個項目,一個是服務端項目,一個是客戶端項目。新建一個nacos的spring boot服務端項目,nacos-provider,

建完後,pom文件如下

<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      <version>0.9.0.RELEASE</version>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>

   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
         <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
         </exclusion>
      </exclusions>
   </dependency>
</dependencies>

application.yml文件配置如下

server:
  port: 8762
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

 

啓動類上面加上註解

 

然後,創建一個nacos-consumer項目,過程如上,此處略,奉上此consumer項目的application.yml配置文件

server:
  port: 8763
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

 

 

依次啓動兩個項目,然後登陸http://127.0.0.1:8848/nacos,服務列表會新增你剛剛註冊的兩個服務,如下圖

 

到此就創建成功了。

 

 


繼續剛纔的項目,使用feign消費服務:

在province項目中,暴露一個controller,如下

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProviderController {

    Logger logger= LoggerFactory.getLogger(ProviderController.class);

    @GetMapping("/hi")
    public String hi(@RequestParam(value = "name",defaultValue = "forezp",required = false)String name){

        return "hi "+name;
    }

}

服務端的接口就算是完成了,接着編寫消費端的代碼。

在consumer項目的pom文件中加入依賴:

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

注意注意注意:::: 一定要加上版本號,這個地方因爲我之前沒加,報錯提示下面的interface沒注入<version>2.1.0.RELEASE</version>

在consumer工程中新建接口

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient("nacos-provider")
public interface ProviderClient {

    @GetMapping("/hi")
    String hi(@RequestParam(value = "name", defaultValue = "forezp", required = false) String name);
}

接着新建 controller調用此service

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {


    @Autowired
    ProviderClient  providerClient;

    @GetMapping("/hi-feign")
    public String hiFeign(){
        return providerClient.hi("feign");
    }
}

重啓工程,在瀏覽器上訪問http://localhost:8763/hi-feign,可以在瀏覽器上展示正確的響應,這時nacos-consumer調用nacos-provider服務成功。

 

 

如果頁面報錯:

引入以下依賴

<dependency>
   <groupId>com.google.guava</groupId>
   <artifactId>guava</artifactId>
   <version>18.0</version>
</dependency>
<dependency>
   <groupId>com.netflix.archaius</groupId>
   <artifactId>archaius-core</artifactId>
   <version>0.7.6</version>
</dependency>
發佈了36 篇原創文章 · 獲贊 4 · 訪問量 7066
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章