SpringBoot集成Nacos实现服务注册和远程调用

1、启动Nacos

首先,需要启动Nacos,这里不做过多介绍。

2、注册服务提供方

创建一个空白的SpringBoot项目,对应项目中加入SpringBoot-Nacos依赖,pom如下所示。

<dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-discovery-spring-boot-starter</artifactId>
            <version>0.2.7</version>
        </dependency>

application配置文件配置Nacos服务的地址,如代码清单所示。

server.port=8081
spring.application.name=demo-provider
nacos.discovery.server-addr=127.0.0.1:8848

在启动类加入@EnableNacosDiscovery注解,完整启动类代码如下所示。

@SpringBootApplication
@EnableNacosDiscovery
public class DemoProviderApplication {
          
   

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

}

新建RegisterNacos使用Naming服务注册实例到注册中心。

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * @author D
 * @Description: Nacos服务注册中心
 * @date 2021/4/12
 */
@Component
public class RegisterNacos {
          
   

    @NacosInjected
    private NamingService namingService;

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

    @Value("${spring.application.name}")
    private String applicationName;

    /**
     * 注册服务
     *
     * @throws NacosException
     */
    @PostConstruct
    public void registerInstance() throws NacosException {
          
   
        namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
    }

}

启动项目后,咱们可以在Nacos服务列表中查看到当前已注册的项目。

3、注册服务消费方

创建一个空白的SpringBoot项目,这次对应项目中加入SpringCloud-Nacos和OpenFeign依赖,pom如下所示。

<!--服务注册-->
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <!--服务调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

application配置文件配置Nacos服务的地址,如代码清单所示。

server.port=8082
spring.application.name=demo-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

在启动类加入@EnableNacosDiscovery和@EnableFeignClients注解,完整启动类代码如下所示。

@SpringBootApplication
@EnableNacosDiscovery
@EnableFeignClients
public class DemoConsumerApplication {
          
   

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

}

新建ProviderFeignClient接口,完整代码如下所示。

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

/**
 * @author D
 * @Description:demo-provider
 * @date 2021/4/12
 */
@FeignClient("demo-provider")
public interface ProviderFeignClient {
          
   

    @RequestMapping("/index")
    String index();

}

新建消费者Controller进行FeignClient远程调用服务方接口,完整代码如下所示。

@RestController
public class ConsumerController {
          
   

    @Autowired
    ProviderFeignClient providerFeignClient;

    @RequestMapping("/customer")
    public String hello() {
          
   
        return providerFeignClient.index();
    }

}

启动项目后,当控制台输出该条日志后即当前服务已成功注册上Nacos。 此时咱们可以使用PostMan消费方所暴露的接口http://127.0.0.1:8082/customer进行远程调用服务提供方接口。

经验分享 程序员 微信小程序 职场和发展