服务注册发现与服务调用【Nacos与OpenFeign的使用】 - 微服务【附源码】

目录

服务注册与发现Nacos

一、创建一个空白maven工程

二、创建一个微服务模块

pom.xml文件

配置文件 application.yaml

主启动类

 启动Nacos Server服务器

启动项目报错及解决办法

远程调用Openfeign

一、新建商品模块

二、当前product微服务加入到聚合模块中

三、注册到注册中心

pom文件

 添加配置文件application.yaml

主启动类添加@EnableDiscoveryClient注解

启动该微服务

四、远程调用

引入依赖

编写被远程调用的接口

 编写远程调用接口

编写接口使用这个调用的接口

主启动类

重启项目出错原因及解决办法

测试

第三方微服务项目如何接入?


源码地址:https://gitee.com/hssymusic/nacos-openfeign-study

服务注册与发现Nacos

一、创建一个空白maven工程

该工程的目的是聚合各个微服务,本身不用来写代码。

创建之后,删除掉src目录以及其他多余结构,只保留pom.xml文件。

将pom.xml文件中的依赖都删除掉,只保留如下结构:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hssy.union</groupId>
    <artifactId>union-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>union-parent</name>
    <description>总父工程</description>
    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <modules>
        <module>union-member</module>
    </modules>


    
</project>

标签解释:

modelVersion

        -        pom.xml文件使用的对象模型版本。

        -        就是pom.xml文件的版本,不用管它,默认的就好。

groupId

        -        项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。

        -        并且构建时生成的路径也是由此生成。

artifactId

        -        构件的标识符,它和group ID一起唯一标识一个构件。

        -        换句话说,你不能有两个不同的项目拥有同样的artifact ID 和groupID;

        -        在某个特定的group ID下,artifact ID也必须是唯一的。

        -        构件是项目产生的或使用的一个东西,Maven 为项目产生的构件包括:JARs,源码,二进制发布和WARs等

version

        -        项目当前版本,格式为:主版本.次版本.增量版本-限定版本号

        -        项目打包后的JAR文件的版本号跟这里对应。

name

        -        项目的名称, Maven产生的文档用

description

        -        项目的详细描述, Maven 产生的文档用。

        -        当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略, 就可以包含HTML标签)

        -        不鼓励使用纯文本描述。

        -        如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。

properties

        -        通过<properties>元素用户可以自定义一个或多个Maven属性

        -        然后在POM的其他地方使用${属性名}的方式引用该属性

        -        这种做法的最大意义在于消除重复和统一管理。

modules

        -        如果我们的项目分成了好几个模块,那么我们构建的时候是不是有几个模块就需要构建几次了(到每个模块的目录下执行mvn命令)?

        -        当然,你逐个构建没问题,但是非要这么麻烦的一个一个的构建吗,那么简单的做法就是使用聚合,一次构建全部模块。

        -        项目A下有一个pom.xml。
        -        项目A下有两个module,每个module中有自己的pom.xml。
        -        在项目A的pom中加入标签,将两个module加入其中。
        -        在构建这个项目的时候,不需要深入每个module去单独构建,而只是在项目A下的pom.xml构建,就会完成对两个module的构建。
        -        如果项目下多module,modules标签的优势将更加明显。

        -        所以,modules标签的作用就是聚合模块,方便统一构建管理。

二、创建一个微服务模块

每一个微服务模块都是一个独立的进程

这里以会员微服务模块为例进行创建

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 当前微服务引入springboot项目父工程,方便进行springboot开发   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.hssy.union</groupId>
    <artifactId>union-member</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>union-member</name>
    <description>会员系统</description>
    <packaging>jar</packaging>


    <!--
        通过<properties>元素用户可以自定义一个或多个Maven属性,
        然后在POM的其他地方使用${属性名}的方式引用该属性,
        这种做法的最大意义在于消除重复和统一管理。
    -->
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.4</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
        <!--
            为什么spring-boot-starter-web依赖不用写版本号?
            是因为当前工程引入了spring-boot-starter-parent父工程
            而spring-boot-starter-parent父工程中已经规定了部分依赖的版本信息
         -->
        <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>
        </dependency>

        <!--
              为什么spring-cloud-starter-openfeign依赖不用写版本号?
              它不是spring-boot-starter-parent父工程的,确也可以不用写版本号
              是因为我们使用了dependencyManagement依赖管理
              引入spring-cloud-dependencies到依赖管理中
              这样它包含的依赖就规定了其中依赖的版本
              当引入该依赖下的openfeign就会使用spring-cloud-dependencies依赖管理对应的版本
         -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--
            同理,
            spring-cloud-starter-alibaba-nacos-config也是通过依赖管理
            所以不用单独写版本号
          -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--
            bootstrap.properties比application.properties的优先级要高
            由于bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;
            而application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。
            但是在SpringCloud 2020.* 版本把bootstrap禁用了,
            导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap从新导入进来就会生效了。
         -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

    </dependencies>


    <!--
        依赖管理可以不用写在当前模块
        可以写在union-parent父工程(聚合工程)中,然后父工程引入该微服务模块
        也可以写在任意一个模块中,然后需要使用的模块调用该依赖即可。
        spring-cloud-dependencies、spring-cloud-alibaba-dependencies这些依赖,
        内部包含了各自相关的各种组件jar包。
        如果直接引用它们,就可以不用再单独引入nacos这些了,但是包含的东西太多,
        没必要都加载依赖。
        所以我们一般会选择将这两个依赖只加入到dependencyManagement中,做版本依赖管理。
        控制这些组件的版本号
      -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

需要注意的是,我们把当前微服务模块加入到总父聚合工程的modules中,方便进行统一Maven构建管理。 可以看到,前面已经添加了。

配置文件 application.yaml

server:
  port: 7000

spring:
  application:
    name: union-member
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

主启动类

添加@EnableDiscoveryClient注解,开启服务注册/发现中心

package com.hssy.union.unionmember;

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

@EnableDiscoveryClient
@SpringBootApplication
public class UnionMemberApplication {

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

}

ps:

通过测试我们发现,只要引入了spring-cloud-starter-alibaba-nacos-discovery的依赖,即使不在配置文件中配置nacos的注册中心地址,甚至不写上@EanableDiscoveryClient注解,一样可以加入到nacos注册中心。

但是,做好还是按照这样的步骤来实现,避免出现问题。防止某些版本不可以。

不用写naocs的服务器地址和端口号,是因为springboot的自动配置功能。nacos注册中心依赖jar包中有autoconfiguration配置类,可以实现默认配置localhost:8848。

假如实际nacos的安装地址变化就不行了,所以就还是必须在配置文件中配置了。

启动Nacos Server服务器

官方下载地址:https://github.com/alibaba/nacos/releases

不过值得注意的是Nacos2.0版本以上的Server默认是以集群方式启动的,需要修改启动文件的配置,以单机模式启动服务。

 

启动本地localhost:8848/nacos,即可进入Nacos客户端

登录用户名、密码均为nacos

启动项目报错及解决办法

控制台报错信息描述:

Description:

No spring.config.import property has been defined

Action:

Add a spring.config.import=nacos: property to your configuration.
	If configuration is not required add spring.config.import=optional:nacos: instead.
	To disable this check, set spring.cloud.nacos.config.import-check.enabled=false.


Process finished with exit code 1

网上搜索该描述,发现产生问题的原因:

bootstrap.properties比application.properties的优先级要高
由于bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;
而application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。
但是在SpringCloud 2020.* 版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap从新导入进来就会生效了。

增加依赖:

 <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.3</version>
        </dependency>

 

启动服务成功,当前union-member微服务已经加入到当前注册中心了。 

远程调用Openfeign

一、新建商品模块

二、当前product微服务加入到聚合模块中

方便Maven统一构建管理

 查看一下union-product微服务的pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hssy.union</groupId>
    <artifactId>union-product</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>union-product</name>
    <description>商品系统</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.4</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

三、注册到注册中心

要想进行远程调用,需要加入同一注册中心

pom文件

pom文件增加nacos注册中心的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hssy.union</groupId>
    <artifactId>union-product</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>union-product</name>
    <description>商品系统</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.4</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--  增加服务注册中心Nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--  增加spring-cloud-alibaba-dependencies微服务依赖管理    -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 添加配置文件application.yaml

server:
  port: 8000
spring:
  application:
    name: union-product
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

主启动类添加@EnableDiscoveryClient注解

package com.hssy.union.unionproduct;

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

@EnableDiscoveryClient
@SpringBootApplication
public class UnionProductApplication {

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

}

启动该微服务

进入Nacos服务器的客户端,查看是否添加到该注册中心

 

 注册成功。接下来就开始测试远程调用功能~

四、远程调用

引入依赖

前面新建模块的时候就引入了openfeign依赖,所以这里不用再添加了。

编写被远程调用的接口

我们先在member中写一个测试接口,好后面让其他微服务去远程调用它

 编写远程调用接口

接下来返回到union-product微服务中

我们可以新建一个feign文件夹,方便管理所有的远程调用接口。当然你不建立也没关系~

package com.hssy.union.unionproduct.feign;


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

@FeignClient("union-member")//注册中心中,需要远程调用服务的服务名
public interface MemberFeignService {
    @GetMapping("/testMember/forFeignTest")
    public String forFeignTest();
}

编写接口使用这个调用的接口

然后我们创建controller来测试这个远程调用的接口。

package com.hssy.union.unionproduct.controller;

import com.hssy.union.unionproduct.feign.MemberFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/testProduct")
public class TestFeignController {
    @Autowired
    private MemberFeignService memberFeignService;

    @GetMapping("hello")
    public String hello(){
        String s = memberFeignService.forFeignTest();

        return "product微服务远程调用到了member的接口*****:  "+s;
    }
}

主启动类

主启动类上添加@EnableFeignClients注解

谁想要远程调用,就再加谁头上 

重启项目出错原因及解决办法

重启项目,发现报错

 原因:

因为SpringCloud Feign在Hoxton.M2 RELEASED版本之后抛弃了Ribbon,使用了spring-cloud-loadbalancer,所以我们这里还需要引入spring-cloud-loadbalancer的依赖,否则就会报错

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

 好的,那么我们在pom文件中增加一项

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hssy.union</groupId>
    <artifactId>union-product</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>union-product</name>
    <description>商品系统</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.4</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--  增加服务注册中心Nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>


        <!--
            因为SpringCloud Feign在Hoxton.M2 RELEASED版本之后抛弃了Ribbon,
            使用了spring-cloud-loadbalancer,
            所以我们这里还需要引入spring-cloud-loadbalancer的依赖,否则就会报错
         -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>


    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--  增加spring-cloud-alibaba-dependencies微服务依赖管理    -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

重新再启动,成功了~ 

建立被调用的服务也重启一下,防止有修改没有重启。 

测试

我们union-product微服务是在8000端口启动的,下面我们访问一下测试接口:localhost:8000/testProduct/hello

 我们发现,远程调用成功了!

第三方微服务项目如何接入?

下面,我们可以模拟其他系统,如果想要接入我们当前这一套微服务项目该怎么做。

我们新开一个idea,创建一个项目,假如就是这个牛牛小游戏系统

 

 

 然后,就还是之前一模一样的操作

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.kkt.game</groupId>
    <artifactId>niuniu</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>niuniu</name>
    <description>牛牛小游戏系统</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.4</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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-bootstrap</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

配置文件

server:
  port: 15000

spring:
  application:
    name: niuniu-game
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

 主启动类

package com.kkt.game.niuniu;

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

@EnableDiscoveryClient
@SpringBootApplication
public class NiuniuApplication {

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

}

启动,看看有没有加入到注册中心

成功加入注册中心

下面编写远程调用

 重启项目测试,牛牛系统的端口号为15000

 测试:http://localhost:15000/NiuNiu/test

 也成功了~~~

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何苏三月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值