Todos os produtos
Search
Central de documentação

Microservices Engine:Crie um registro de service para aplicações Dubbo no MSE

Última atualização: Aug 25, 2026

Neste tutorial, você cria um registro de service no Microservices Engine (MSE) para uma aplicação Apache Dubbo e o utiliza para registro e descoberta de services. Ao final, um consumidor Dubbo em execução na máquina local chama um provedor descoberto por meio de um registro Nacos do MSE.

Arquitetura

A aplicação de exemplo é uma aplicação de microsserviços Dubbo composta por um provedor e um consumidor. Você desenvolve essas duas funções como projetos Maven separados na máquina local, e ambos se conectam à mesma instância de registro no MSE pelo endpoint público.

  • Projeto do provedor — Expõe a interface com.alibaba.mse.IHelloService como um service Dubbo na porta 28082 e registra o service na instância de registro do MSE.

  • Projeto do consumidor — Assina a interface com.alibaba.mse.IHelloService pela mesma instância de registro e chama o provedor.

  • Instância de registro no MSE — Funciona como o registro de service onde o provedor se registra e ao qual o consumidor assina.

Tipos de registro

O MSE pode hospedar um registro de service Nacos, ZooKeeper ou Eureka para uma aplicação Dubbo. Este tutorial utiliza o MSE Nacos, e todos os exemplos de configuração neste tópico têm como alvo uma instância do MSE Nacos.

  • Nacos (utilizado neste tutorial) — Defina o endereço de registro do Dubbo como o endpoint público da sua instância do MSE Nacos. Nenhuma outra configuração específica de registro é necessária.

  • ZooKeeper — Caso utilize o MSE ZooKeeper como registro de service, substitua o código de registro na Etapa 2 pelo código correspondente ao ZooKeeper. Para mais informações, consulte Usage notes.

Pré-requisitos

  • Baixe o Maven e defina as variáveis de ambiente.

  • Tenha uma IDE instalada na máquina local, como IntelliJ IDEA ou Eclipse.

  • Uma instância do MSE Nacos. Para instruções, consulte Create a Nacos engine instance

  • Create a namespace. Este tutorial utiliza o namespace padrão, Public.

Etapa 1: Crie o projeto do provedor e defina o service

Nesta etapa, crie o projeto Maven para o provedor e defina o service que ele expõe. No Dubbo, todos os services são fornecidos como interfaces.

  1. Na IDE, crie um projeto Maven para o provedor.

  2. Adicione as dependências dubbo e nacos-client ao arquivo pom.xml.

    <dependencies>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.9</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.4.2</version>
        </dependency>
    </dependencies>
  3. No diretório src/main/java, crie um pacote chamado com.alibaba.mse.

  4. Em com.alibaba.mse, crie uma interface chamada IHelloService com o método sayHello.

    package com.alibaba.mse;
    
    public interface IHelloService {
        String sayHello(String str);
    }
  5. Em com.alibaba.mse, crie uma classe chamada IHelloServiceImpl que implemente a interface.

    package com.alibaba.mse;
    
    public class IHelloServiceImpl implements IHelloService {
        public String sayHello(String str) {
            return "hello " + str;
        }
    }

Etapa 2: Configure o provedor para usar o MSE Nacos como registro

Nesta etapa, crie o arquivo provider.xml, que expõe IHelloService como um service Dubbo e aponta o provedor para a instância do MSE Nacos. Obtenha primeiro o endpoint da instância, pois a configuração do registro depende dele.

  1. Faça login no console do MSE e visualize o endpoint público da instância Nacos criada no MSE. O endpoint público aparece na coluna Access Method da lista de instâncias e segue o formato mse.XX.nacos.mse.aliyuncs.com.

  2. No diretório src/main/resources do projeto do provedor, crie um arquivo chamado provider.xml.

  3. Adicione a seguinte configuração ao arquivo provider.xml. Substitua mse.XX.nacos.mse.aliyuncs.com pelo endpoint público da sua instância Nacos.

    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <dubbo:application name="demo-provider"/>
    
        <dubbo:protocol name="dubbo" port="28082"/>
    
        <dubbo:service interface="com.alibaba.mse.IHelloService" ref="helloService"/>
    
        <bean id="helloService" class="com.alibaba.mse.IHelloServiceImpl"/>
    
        <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
    </beans>

A tabela a seguir descreve a configuração no arquivo provider.xml.

Elemento

Descrição

xmlns, xmlns:xsi, xmlns:dubbo e xsi:schemaLocation

Declara o Namespace XML do Spring (xmlns) e a Instância de Schema XML (xmlns:xsi), além do Namespace Dubbo (xmlns:dubbo) e da Instância de Schema (xsi:schemaLocation).

dubbo:application

Nome da aplicação provedora. Este exemplo usa demo-provider.

dubbo:protocol

Publica o service pelo protocolo dubbo na porta 28082.

dubbo:service e bean

Expõem a interface IHelloService e a classe de implementação IHelloServiceImpl como um service Dubbo.

dubbo:registry

Especifica a instância Nacos criada no MSE como o registro de service. O endereço corresponde ao endpoint público da instância.

Etapa 3: Permita que o provedor acesse a instância do MSE

O provedor acessa o registro pelo endpoint público da instância do MSE, portanto, a lista de permissões da instância deve permitir esse tráfego. Conclua esta etapa antes de iniciar o provedor. Caso contrário, o registro falhará.

  1. No console do MSE, no painel de navegação à esquerda, escolha Microservices Registry > Instances. Na página Instances, clique em na instância do MSE que você criou.

  2. Limpe a lista de permissões da instância. Se nenhum endereço IP ou máscara for especificado, todos os endereços poderão acessar a instância. Este tutorial usa uma lista de permissões vazia como exemplo. Para mais informações, consulte Set a whitelist.

Aviso

Uma lista de permissões vazia permite que todos os endereços acessem a instância do MSE.

Etapa 4: Inicie o provedor e verifique o registro

Nesta etapa, inicie o provedor e confirme no console do MSE que o service está registrado na instância Nacos.

  1. Em com.alibaba.mse, crie uma classe chamada Provider. Utilize o código abaixo para carregar o contexto Spring no método main da classe Provider e expor o service Dubbo configurado.

    package com.alibaba.mse;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Provider {
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});
            context.start();
            System.in.read();
        }
    }
  2. Execute o método main da classe Provider para iniciar o service. Mantenha o processo em execução até concluir o tutorial, pois o consumidor chamará esse processo.

  3. No console do MSE, na página de detalhes da sua instância do MSE, escolha Service Management > Services no painel de navegação à esquerda.

  4. Verifique se a lista de services contém com.alibaba.mse.IHelloService, a interface exposta pela aplicação demo-provider.

Não prossiga para a próxima etapa até que a interface apareça na lista de services. Se a interface não aparecer, verifique as seguintes configurações:

  • Lista de permissões — A lista de permissões da instância do MSE permite o endereço da sua máquina local. Uma lista vazia permite todos os endereços.

  • Endereço do registro — O endereço dubbo:registry no arquivo provider.xml usa o endpoint público da sua instância, e não o placeholder mse.XX.nacos.mse.aliyuncs.com.

  • Tipo de registro — O endereço dubbo:registry utiliza o esquema do tipo de instância criado, como nacos:// para uma instância do MSE Nacos.

Etapa 5: Crie o consumidor e assine o service

Nesta etapa, crie um segundo projeto Maven para o consumidor, assine a interface com.alibaba.mse.IHelloService pela mesma instância do MSE Nacos e implemente a classe que chama o provedor.

  1. Na IDE, crie um segundo projeto Maven para o consumidor.

  2. Adicione as dependências dubbo e nacos-client ao arquivo pom.xml do projeto do consumidor. As dependências são idênticas às do projeto do provedor na Etapa 1.

  3. No diretório src/main/java, crie o pacote com.alibaba.mse e adicione a interface IHelloService definida na Etapa 1. O consumidor referencia o service pela interface, então ela deve estar no classpath do projeto do consumidor.

  4. No diretório src/main/resources do projeto do consumidor, crie um arquivo chamado consumer.xml. Substitua mse.XX.nacos.mse.aliyuncs.com pelo endpoint público da sua instância Nacos, o mesmo endpoint configurado no arquivo provider.xml.

    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <dubbo:application name="demo-consumer"/>
    
        <dubbo:registry address="nacos://mse.XX.nacos.mse.aliyuncs.com:8848" />
    
        <dubbo:reference id="helloService" interface="com.alibaba.mse.IHelloService"/>
    </beans>

    O elemento dubbo:registry aponta o consumidor para o mesmo registro do provedor, e o elemento dubbo:reference assina a interface com.alibaba.mse.IHelloService exposta pelo provedor.

  5. Em com.alibaba.mse, crie uma classe chamada Consumer. Use o código abaixo para carregar o contexto Spring no método main da classe Consumer e chamar o método sayHello do service assinado.

    package com.alibaba.mse;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Consumer {
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});
            context.start();
            IHelloService helloService = (IHelloService) context.getBean("helloService");
            System.out.println(helloService.sayHello("mse"));
        }
    }

Etapa 6: Verifique a chamada do consumidor para o provedor

Nesta etapa, confirme que o consumidor descobre o provedor pelo registro do MSE Nacos e recebe a resposta do método sayHello. O consumidor passa mse como argumento, e IHelloServiceImpl retorna hello seguido desse argumento.

  1. Confirme se o processo do provedor iniciado na Etapa 4 ainda está em execução.

  2. Execute o método main da classe Consumer.

  3. Verifique a saída no console do projeto do consumidor. A saída abaixo indica que o consumidor chamou o provedor com sucesso:

    hello mse

Se a chamada falhar ou nenhuma saída for retornada, verifique as seguintes configurações:

  • Disponibilidade do provedor — O processo do provedor está em execução e com.alibaba.mse.IHelloService aparece na lista de services da instância do MSE.

  • Endereço do registro — O endereço dubbo:registry no arquivo consumer.xml corresponde ao endpoint público configurado no arquivo provider.xml.

  • Nome da interface — A interface no elemento dubbo:reference do arquivo consumer.xml corresponde a com.alibaba.mse.IHelloService, que é a interface no elemento dubbo:service do arquivo provider.xml.

  • Lista de permissões — A lista de permissões da instância do MSE permite o endereço da sua máquina local.