SpringCloudAlibaba(三)——Nacos客戶端開發和openfeign服務間通信


Nacos客戶端開發和openfeign服務間通信

nacos客戶端開發

1、新建一個模塊springclouAlibaba-nacos-client-8989

image

2、導入相關依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
<!--引入nacos client的依賴-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

3、編寫application.properties配置文件

server.port=8989
spring.application.name=NACOSCLIENT

#指定服務名稱
spring.cloud.nacos.server-addr=47.106.105.80:8848

4、編寫主啟動類

package com.study.springcloudAlibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient   //開啟服務的注冊(可以省略不寫)
public class NacosClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosClientApplication.class,args);
    }
}

5、啟動測試

image

openfeign服務間的通信

一、消費者模塊

1、新建一個提供者模塊springcloudAlibaba-products-9090

image

2、導入相關依賴

 <dependencies>
    <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>
</dependencies>

3、編寫application.properties配置文件

server.port=9090
spring.application.name=PRODUCTS

#指定nacos server地址
spring.cloud.nacos.server-addr=47.106.105.80:8848

4、編寫主啟動類

package com.sutdy.springcloudAlibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ProductsApplication_9090 {
    public static void main(String[] args) {
        SpringApplication.run(ProductsApplication_9090.class,args);
    }
}

5、編寫controller層

package com.sutdy.springcloudAlibaba.controller;

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

@RestController
public class ProductsController {

    @Value("${server.port}")
    private int port;

    @GetMapping("/product/{id}")
    public String products(@PathVariable("id") Integer id){
        return "調用商品服務返回:"+id+",當前提供服務的端口為:"+port;
    }
}

二、消費者模塊

1、新建一個消費者模塊springcloudAlibaba-users-8989

image

2、導入相關依賴

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--引入nacos client的依賴-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--導入openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

3、編寫application.properties配置文件

server.port=8989
spring.application.name=USERS

#指定nacos server地址
spring.cloud.nacos.server-addr=47.106.105.80:8848

4、編寫主啟動類,添加@EnableFeignClients注解開啟Openfeign

package com.study.springcloudAlibaba;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients //開啟Openfeign調用支持
public class UserApplication_8989 {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication_8989.class,args);
    }
}

5、編寫openfeign客戶端接口,添加@FeignClient("PRODUCTS")注解調用名稱為"PRODUCTS"的微服務,實現服務之間的通信。

package com.study.springcloudAlibaba.feignclients;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;


@FeignClient("PRODUCTS")
public interface ProductClient {
    @RequestMapping("/product/{id}")
    String product(@PathVariable("id") Integer id);
}

6、編寫controller層實現服務通信接口

package com.study.springcloudAlibaba.controller;

import com.study.springcloudAlibaba.feignclients.ProductClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private ProductClient productClient;

    @GetMapping("/invoke")
    public String invokeProduct(){
        String result = productClient.product(21);
        return "調用用戶服務成功.....調用商品服務結果:{}"+result;
    }
}

三、啟動測試

1、點擊 編輯配置

image

2、選擇ProductsApplication_9090,再點擊復制

image

3、點擊復制出來的ProductsApplication_9091,再點擊配置,修改名稱和端口號

image

4、啟動服務提供者9090和9091,再啟動消費者8989

image

5、進入 http://localhost:8989/invoke 頁面

image

刷新
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM