Todos los productos
Search
Centro de documentos

Microservices Engine:Register Spring Cloud applications with MSE Nacos registries

Última actualización: Sep 17, 2026

Cuando varios microservices de Spring Cloud necesitan descubrirse y llamarse entre sí, un registro de servicios centralizado elimina los endpoints codificados de forma manual y habilita el enrutamiento dinámico. Microservices Engine (MSE) proporciona un registro Nacos administrado que gestiona el descubrimiento de servicios y la administración de configuración. Solo necesita configurar el endpoint del registro en su aplicación para que esta se registre automáticamente al iniciarse.

Esta guía explica cómo compilar un proveedor y un consumidor, registrar ambos en un registro Nacos de MSE y comprobar las llamadas de servicio de extremo a extremo.

Requisitos previos

Antes de empezar, compruebe que cuenta con lo siguiente:

  • Maven instalado y con las variables de entorno configuradas.

  • Una instancia de MSE Nacos. Consulte Create an instance.

  • Un namespace. Consulte Create a namespace. Esta guía utiliza el namespace predeterminado Public.

Importante

Si accede al registro de MSE Nacos a través de Internet, tanto el proveedor como el consumidor deben tener acceso a Internet. Agregue sus direcciones IP públicas a la lista blanca del registro. Consulte Configure a public IP address whitelist.

Paso 1: Compilar el proveedor

Cree una aplicación de Spring Cloud que exponga un endpoint REST y se registre en el registro de MSE Nacos como proveedor de servicios.

1. Crear un proyecto de Maven

Cree un proyecto de Maven llamado nacos-service-provider.

2. Agregar dependencias

Agregue lo siguiente al archivo pom.xml. Este ejemplo usa Spring Boot 2.1.4.RELEASE con Spring Cloud Greenwich.SR1.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- Nacos service discovery -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR1</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>

La versión de Spring Cloud Alibaba debe coincidir con la versión de Spring Cloud:

Versión de Spring Cloud

Versión de Spring Cloud Alibaba

Estado

Greenwich

2.1.1.RELEASE

Activa

Finchley

2.0.1.RELEASE

Activa

Edgware

1.5.1.RELEASE

Descontinuada

Importante

Spring Cloud Edgware está descontinuada. No la utilice para aplicaciones nuevas.

3. Crear la clase de la aplicación

Cree un paquete llamado com.aliware.edas dentro de src/main/java. Agregue la siguiente clase llamada ProviderApplication.

La anotación @EnableDiscoveryClient habilita el registro y el descubrimiento de servicios.

package com.aliware.edas;

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

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

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

4. Crear un controlador REST

En el mismo paquete com.aliware.edas, cree una clase llamada EchoController que asigne las solicitudes GET a /echo/{string} y devuelva la variable de ruta.

package com.aliware.edas;

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

@RestController
public class EchoController {
    @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
    public String echo(@PathVariable String string) {
        return string;
    }
}

5. Configurar el endpoint del registro de Nacos

Cree un archivo llamado application.properties dentro de src/main/resources:

spring.application.name=service-provider
server.port=18081
spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848
# To use a custom namespace, uncomment the following line:
# spring.cloud.nacos.discovery.namespace=<namespace-id>

Reemplace mse.XX.nacos.mse.aliyuncs.com con el endpoint público de su instancia de MSE Nacos. Para encontrar este valor, abra la consola de MSE, vaya a Microservices Registry > Instances y ubique el endpoint en la página de detalles de la instancia.

Importante

Si utiliza un registro de MSE ZooKeeper o Eureka en lugar de Nacos, ajuste la configuración del registro según corresponda. Consulte Usage notes.

6. Comprobar el registro del proveedor

  1. Ejecute el método main de ProviderApplication para iniciar el proveedor.

  2. Inicie sesión en la consola de MSE y seleccione una región en la barra de navegación superior.

  3. En el panel de navegación izquierdo, elija Microservices Registry > Instances. Haga clic en el nombre de la instancia.

  4. Elija Service Management > Services.

  5. En la página Services, confirme que service-provider aparece en la lista.

Paso 2: Compilar el consumidor

Cree una aplicación de Spring Cloud que llame al proveedor mediante RestTemplate y FeignClient, y que se registre en el mismo registro de MSE Nacos.

1. Crear un proyecto de Maven

Cree un proyecto de Maven llamado nacos-service-consumer.

2. Agregar dependencias

Agregue lo siguiente al archivo pom.xml. En comparación con el proveedor, el consumidor agrega spring-cloud-starter-openfeign para realizar llamadas REST declarativas.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- Nacos service discovery -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Declarative REST client -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR1</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>

3. Crear la interfaz de FeignClient

Cree un paquete llamado com.aliware.edas dentro de src/main/java. Agregue una interfaz llamada EchoService con la anotación @FeignClient que apunte a service-provider.

package com.aliware.edas;

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

@FeignClient(name = "service-provider")
public interface EchoService {
    @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
    String echo(@PathVariable("str") String str);
}

4. Crear la clase de la aplicación

En el mismo paquete, cree una clase llamada ConsumerApplication con las siguientes anotaciones:

  • @EnableDiscoveryClient: habilita el registro y el descubrimiento de servicios.

  • @EnableFeignClients: habilita FeignClient.

  • @LoadBalanced en el bean RestTemplate: integra RestTemplate con el descubrimiento de servicios para equilibrar la carga del lado del cliente.

package com.aliware.edas;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

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

5. Crear un controlador de prueba

En el mismo paquete, cree una clase llamada TestController que exponga dos endpoints: uno con RestTemplate y otro con FeignClient. Esto le permitirá demostrar ambos métodos de descubrimiento de servicios.

package com.aliware.edas;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class TestController {

    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private EchoService echoService;

    @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
    public String rest(@PathVariable String str) {
        return restTemplate.getForObject("http://service-provider/echo/" + str,
                String.class);
    }

    @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
    public String feign(@PathVariable String str) {
        return echoService.echo(str);
    }
}

6. Configurar el endpoint del registro de Nacos

Cree un archivo llamado application.properties dentro de src/main/resources:

spring.application.name=service-consumer
server.port=18082
spring.cloud.nacos.discovery.server-addr=mse.XX.nacos.mse.aliyuncs.com:8848
# To use a custom namespace, uncomment the following line:
# spring.cloud.nacos.discovery.namespace=<namespace-id>

Reemplace mse.XX.nacos.mse.aliyuncs.com con el endpoint público de su instancia de MSE Nacos, tal como se describe en el subpaso 5 del paso 1.

Importante

Si utiliza un registro de MSE ZooKeeper o Eureka en lugar de Nacos, ajuste la configuración del registro según corresponda. Consulte Usage notes.

7. Comprobar el registro del consumidor

  1. Ejecute el método main de ConsumerApplication para iniciar el consumidor.

  2. Inicie sesión en la consola de MSE y seleccione una región en la barra de navegación superior.

  3. En el panel de navegación izquierdo, elija Microservices Registry > Instances. Haga clic en el nombre de la instancia.

  4. Elija Service Management > Services.

  5. En la página Services, confirme que service-consumer aparece en la lista.

Paso 3: Probar las llamadas de servicio

Con ambas aplicaciones en ejecución, compruebe que el consumidor puede descubrir y llamar al proveedor.

Linux, UNIX o macOS:

curl http://127.0.0.1:18082/echo-rest/rest-rest
curl http://127.0.0.1:18082/echo-feign/feign-rest

Windows: Abra un navegador y vaya a las siguientes URL:

  • http://127.0.0.1:18082/echo-rest/rest-rest

  • http://127.0.0.1:18082/echo-feign/feign-rest

Resultado esperado para el endpoint de RestTemplate:

rest-rest

Resultado esperado para el endpoint de FeignClient:

feign-rest

Si ambas respuestas coinciden, el consumidor descubrió y llamó al proveedor a través del registro de MSE Nacos.

Preguntas frecuentes

Los servicios no aparecen en la consola de MSE después del registro

De forma predeterminada, la lista blanca de direcciones IP públicas se establece en 127.0.0.1/32, lo cual bloquea todo el acceso externo. Agregue las direcciones IP públicas de sus máquinas proveedoras y consumidoras a la lista blanca. Consulte Configure a public IP address whitelist.

¿Qué versiones de Spring Cloud admite MSE?

Versión de Spring Cloud

Versión de Spring Cloud Alibaba

Estado

Greenwich

2.1.1.RELEASE

Activa

Finchley

2.0.1.RELEASE

Activa

Edgware

1.5.1.RELEASE

Descontinuada

Spring Cloud Edgware está descontinuada. No la utilice para aplicaciones nuevas.