Todos os produtos
Search
Central de documentação

Microservices Engine:Conectar o Spring Cloud ao MSE Nacos

Última atualização: Jun 28, 2026

Ao configurar um endpoint de instância do MSE Nacos em uma aplicação Spring Cloud, a aplicação se registra automaticamente no registro de serviços do MSE Nacos durante a inicialização. Esse registro permite a descoberta de serviços, o gerenciamento de configurações e chamadas entre serviços. Este tópico mostra como conectar sua aplicação ao registro.

Pré-requisitos

Importante

Para acessar o MSE Nacos pela rede pública, tanto o provedor quanto o consumidor de serviços precisam ter acesso à rede pública. Adicione também os endereços IP das suas aplicações à lista de permissões da instância do MSE Nacos. Para mais informações, consulte Configure uma lista de permissões de endereços IP públicos.

Crie um provedor de serviços

Crie localmente uma aplicação de provedor de serviços, adicione as dependências necessárias, ative o registro e a descoberta de serviços e especifique sua instância do MSE Nacos como registro de serviços.

  1. Crie um projeto Maven chamado nacos-service-provider.

  2. No arquivo pom.xml, adicione as seguintes dependências.

    Este exemplo usa Spring Boot 2.1.4.RELEASE e 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>
        <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>                  

    A versão Spring Cloud Greenwich corresponde à versão 2.1.1.RELEASE do Spring Cloud Alibaba.

    • Se você utilizar a versão Spring Cloud Finchley, a versão correspondente do Spring Cloud Alibaba será a 2.0.1.RELEASE.

    • Caso utilize a versão Spring Cloud Edgware, a versão correspondente do Spring Cloud Alibaba será a 1.5.1.RELEASE.

    Importante

    O ciclo de vida do Spring Cloud Edgware foi descontinuado. Recomendamos não utilizar esta versão para novas aplicações.

  3. No diretório src\main\java, crie um package chamado com.aliware.edas.

  4. No package com.aliware.edas, crie a classe de bootstrap do provedor de serviços ProviderApplication e adicione o seguinte código.

    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);
            }
        }             
    Nota

    A anotação @EnableDiscoveryClient ativa a funcionalidade de registro e descoberta de serviços para a aplicação.

  5. No package com.aliware.edas, crie um EchoController. O método recebe um parâmetro do caminho da URL e o retorna na resposta.

    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;
          }
    }              
  6. No diretório src\main\resources, crie um arquivo chamado application.properties. Adicione a seguinte configuração ao arquivo e especifique o endpoint do servidor Nacos.

    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 and configure the following line:
    #spring.cloud.nacos.discovery.namespace={namespaceId}               

    Na página Instances, visualize o endpoint público da sua instância do MSE Nacos. O formato é mse.XX.nacos.mse.aliyuncs.com.

    Importante

    Se você utilizar uma instância do MSE ZooKeeper ou Eureka como registro de serviços, substitua a configuração específica do Nacos nesta etapa pela configuração correspondente para ZooKeeper ou Eureka. Para mais informações, consulte Notas de uso para clusters do MSE.

  7. Verifique se a aplicação foi registrada com sucesso.

    1. Execute o método main da classe ProviderApplication no projeto nacos-service-provider para iniciar a aplicação.

    2. Faça login no MSE console e selecione uma região na barra de navegação superior.

    3. No painel de navegação à esquerda, escolha Microservices Registry > Instances. Clique em nome da instância.

    4. Service ManagementServices

    5. Na página Services, verifique se a aplicação service-provider aparece na lista.

Crie um consumidor de serviços

Esta seção demonstra como registrar um consumidor de serviços e usar a descoberta de serviços do Nacos com dois clientes: RestTemplate e FeignClient.

  1. Crie um projeto Maven chamado nacos-service-consumer.

  2. No arquivo pom.xml, adicione as seguintes dependências.

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
    <dependencies>
        <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>
        <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. No diretório src\main\java, crie um package chamado com.aliware.edas.

  4. No package com.aliware.edas, configure o RestTemplate e o FeignClient.

    1. Em com.aliware.edas, crie uma classe de interface chamada EchoService, adicione a anotação @FeignClient e configure a URL HTTP e o método HTTP correspondentes.

      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);
      }                   
    2. Em com.aliware.edas, crie a classe de bootstrap ConsumerApplication e adicione as configurações relevantes.

      • Use a anotação @EnableDiscoveryClient para ativar o registro e a descoberta de serviços.

      • Use a anotação @EnableFeignClients para ativar o FeignClient.

      • Use a anotação @LoadBalanced para integrar o RestTemplate à descoberta de serviços.

      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. No package com.aliware.edas, crie uma classe chamada TestController para demonstrar e verificar o recurso de descoberta de serviços.

    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. No diretório src\main\resources, crie um arquivo chamado application.properties. Adicione a seguinte configuração ao arquivo para especificar o endereço do registro de serviços do Nacos.

    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 and configure the following line:
    #spring.cloud.nacos.discovery.namespace={namespaceId}

    Na página Instances, visualize o endpoint público da sua instância do MSE Nacos. O formato é mse.XX.nacos.mse.aliyuncs.com.

    Importante

    Se você utilizar uma instância do MSE ZooKeeper ou Eureka como registro de serviços, substitua a configuração específica do Nacos nesta etapa pela configuração correspondente para ZooKeeper ou Eureka. Para mais informações, consulte Notas de uso.

  7. Verifique se a aplicação foi registrada com sucesso.

    1. Execute o método main da classe ConsumerApplication no projeto nacos-service-consumer para iniciar a aplicação.

    2. Faça login no MSE console e selecione uma região na barra de navegação superior.

    3. No painel de navegação à esquerda, escolha Microservices Registry > Instances. Clique em nome da instância.

    4. Service ManagementServices

    5. Na página Services, verifique se a aplicação service-consumer aparece na lista.

Testes locais

Teste localmente a chamada de serviço do consumidor para o provedor de serviços.

  • No Linux, Unix ou macOS, use os seguintes comandos para fazer as chamadas de serviço.

    curl http://127.0.0.1:18082/echo-rest/rest-rest
    curl http://127.0.0.1:18082/echo-feign/feign-rest
  • No Windows, insira http://127.0.0.1:18082/echo-rest/rest-rest e http://127.0.0.1:18082/echo-feign/feign-rest na barra de endereços do seu navegador.

    Uma resposta bem-sucedida retorna a string fornecida na URL. O primeiro comando retorna rest-rest e o segundo retorna feign-rest, confirmando que a chamada de serviço foi realizada com sucesso.

    consumer consumes Provider

Perguntas frequentes

Serviço não visível no MSE console

Configure a lista de permissões para o acesso da sua aplicação. Para mais informações, consulte Configure uma lista de permissões de endereços IP públicos.

Nota

Por padrão, a lista de permissões do MSE está definida como 127.0.0.1/32, bloqueando todo o acesso externo.

Versões suportadas do Spring Cloud

  • Para o Spring Cloud Greenwich, a versão correspondente do Spring Cloud Alibaba é a 2.1.1.RELEASE.

  • Quanto ao Spring Cloud Finchley, a versão correspondente do Spring Cloud Alibaba é a 2.0.1.RELEASE.

  • No caso do Spring Cloud Edgware, a versão correspondente do Spring Cloud Alibaba é a 1.5.1.RELEASE.

Importante

O ciclo de vida do Spring Cloud Edgware foi descontinuado. Recomendamos não utilizar esta versão para novas aplicações.