Tous les produits
Search
Centre de documentation

Microservices Engine:Créer un registre de services pour les applications Dubbo sur MSE

Dernière mise à jour :Aug 25, 2026

Dans ce tutoriel, vous créez un registre de services sur Microservices Engine (MSE) pour une application Apache Dubbo et l'utilisez pour l'enregistrement et la découverte de services. À la fin de ce guide, un consommateur Dubbo exécuté sur votre machine locale appelle un fournisseur découvert via un registre MSE Nacos.

Architecture

L'exemple d'application est une application de microservices Dubbo composée d'un fournisseur et d'un consommateur. Vous développez ces deux rôles sous forme de deux projets Maven distincts sur votre machine locale. Tous deux se connectent à la même instance de registre sur MSE via son endpoint public.

  • Projet fournisseur — Expose l'interface com.alibaba.mse.IHelloService en tant que service Dubbo sur le port 28082 et enregistre le service auprès de l'instance de registre sur MSE.

  • Projet consommateur — S'abonne à com.alibaba.mse.IHelloService via la même instance de registre et appelle le fournisseur.

  • Instance de registre sur MSE — Fait office de registre de services auprès duquel le fournisseur s'enregistre et auquel le consommateur s'abonne.

Types de registres

MSE peut héberger un registre de services Nacos, ZooKeeper ou Eureka pour une application Dubbo. Ce tutoriel utilise MSE Nacos ; chaque exemple de configuration de cette rubrique cible une instance MSE Nacos.

  • Nacos (utilisé dans ce tutoriel) — Définissez l'adresse du registre Dubbo sur l'endpoint public de votre instance MSE Nacos. Aucune autre configuration spécifique au registre n'est requise.

  • ZooKeeper — Si vous utilisez MSE ZooKeeper comme registre de services, remplacez le code du registre à l'étape 2 par le code correspondant pour ZooKeeper. Pour plus d'informations, consultez Notes d'utilisation.

Prérequis

  • Téléchargez Maven et configurez les variables d'environnement.

  • Un IDE, tel qu'IntelliJ IDEA ou Eclipse, est installé sur votre machine locale.

  • Une instance MSE Nacos. Pour obtenir des instructions, consultez Créer une instance de moteur Nacos

  • Créer un namespace. Ce tutoriel utilise le namespace par défaut, Public.

Étape 1 : Créer le projet fournisseur et définir le service

Dans cette étape, vous créez le projet Maven pour le fournisseur et définissez le service que celui-ci expose. Dans Dubbo, tous les services sont fournis sous forme d'interfaces.

  1. Dans votre IDE, créez un projet Maven pour le fournisseur.

  2. Ajoutez les dépendances dubbo et nacos-client au fichier 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. Dans le répertoire src/main/java, créez un package nommé com.alibaba.mse.

  4. Dans com.alibaba.mse, créez une interface nommée IHelloService qui contient une méthode sayHello.

    package com.alibaba.mse;
    
    public interface IHelloService {
        String sayHello(String str);
    }
  5. Dans com.alibaba.mse, créez une classe nommée IHelloServiceImpl qui implémente l'interface.

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

Étape 2 : Configurer le fournisseur pour utiliser MSE Nacos comme registre

Dans cette étape, vous créez le fichier provider.xml, qui expose IHelloService en tant que service Dubbo et pointe le fournisseur vers l'instance MSE Nacos. Récupérez d'abord l'endpoint de l'instance, car la configuration du registre en a besoin.

  1. Connectez-vous à la console MSE et consultez l'endpoint public de l'instance Nacos que vous avez créée sur MSE. L'endpoint public s'affiche dans la colonne Access Method de la liste des instances et suit le format mse.XX.nacos.mse.aliyuncs.com.

  2. Dans le répertoire src/main/resources du projet fournisseur, créez un fichier nommé provider.xml.

  3. Ajoutez la configuration suivante au fichier provider.xml. Remplacez mse.XX.nacos.mse.aliyuncs.com par l'endpoint public de votre instance 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>

Le tableau suivant décrit la configuration du fichier provider.xml.

Élément Description
xmlns, xmlns:xsi, xmlns:dubbo et xsi:schemaLocation Déclare l'espace de noms XML Spring (xmlns) et l'instance de schéma XML (xmlns:xsi), ainsi que l'espace de noms Dubbo (xmlns:dubbo) et l'instance de schéma (xsi:schemaLocation).
dubbo:application Nom de l'application fournisseur. Cet exemple utilise demo-provider.
dubbo:protocol Publie le service via le protocole dubbo sur le port 28082.
dubbo:service et bean Exposent l'interface IHelloService et la classe d'implémentation IHelloServiceImpl en tant que service Dubbo.
dubbo:registry Spécifie l'instance Nacos que vous avez créée sur MSE en tant que registre de services. L'adresse correspond à l'endpoint public de l'instance.

Étape 3 : Autoriser le fournisseur à accéder à l'instance MSE

Le fournisseur atteint le registre via l'endpoint public de l'instance MSE ; la liste d'autorisation de l'instance doit donc autoriser ce trafic. Effectuez cette étape avant de démarrer le fournisseur. Sinon, l'enregistrement échouera.

  1. Dans la console MSE, dans le volet de navigation de gauche, choisissez Microservices Registry > Instances. Sur la page Instances, cliquez sur l'instance MSE que vous avez créée.

  2. Effacez la liste d'autorisation de l'instance. Si vous ne spécifiez aucune adresse IP ni aucun masque, toutes les adresses peuvent accéder à l'instance. Ce tutoriel utilise une liste d'autorisation vide à titre d'exemple. Pour plus d'informations, consultez Définir une liste d'autorisation.

Avertissement

Une liste d'autorisation vide permet à toutes les adresses d'accéder à l'instance MSE.

Étape 4 : Démarrer le fournisseur et vérifier l'enregistrement

Dans cette étape, vous démarrez le fournisseur et confirmez dans la console MSE que le service est enregistré auprès de l'instance Nacos.

  1. Dans com.alibaba.mse, créez une classe nommée Provider. Utilisez le code suivant pour charger le contexte Spring dans la méthode main de Provider et exposer le service Dubbo que vous avez configuré.

    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. Exécutez la méthode main de Provider pour démarrer le service. Maintenez le processus en cours d'exécution jusqu'à la fin du tutoriel, car le consommateur appellera ce processus.

  3. Dans la console MSE, sur la page des détails de votre instance MSE, choisissez Service Management > Services dans le volet de navigation de gauche.

  4. Vérifiez que la liste des services contient com.alibaba.mse.IHelloService, l'interface exposée par l'application demo-provider.

Ne passez pas à l'étape suivante tant que l'interface n'apparaît pas dans la liste des services. Si l'interface n'apparaît pas, vérifiez les configurations suivantes :

  • Liste d'autorisation — La liste d'autorisation de l'instance MSE autorise l'adresse de votre machine locale. Une liste d'autorisation vide autorise toutes les adresses.

  • Adresse du registre — L'adresse dubbo:registry dans provider.xml utilise l'endpoint public de votre instance, et non l'espace réservé mse.XX.nacos.mse.aliyuncs.com.

  • Type de registre — L'adresse dubbo:registry utilise le schéma correspondant au type d'instance que vous avez créé, par exemple nacos:// pour une instance MSE Nacos.

Étape 5 : Créer le consommateur et s'abonner au service

Dans cette étape, vous créez un second projet Maven pour le consommateur, vous abonnez à com.alibaba.mse.IHelloService via la même instance MSE Nacos et implémentez la classe qui appelle le fournisseur.

  1. Dans votre IDE, créez un second projet Maven pour le consommateur.

  2. Ajoutez les dépendances dubbo et nacos-client au fichier pom.xml du projet consommateur. Les dépendances sont identiques à celles du projet fournisseur de l'étape 1.

  3. Dans le répertoire src/main/java, créez le package com.alibaba.mse et ajoutez l'interface IHelloService que vous avez définie à l'étape 1. Le consommateur référence le service par son interface ; celle-ci doit donc figurer dans le classpath du projet consommateur.

  4. Dans le répertoire src/main/resources du projet consommateur, créez un fichier nommé consumer.xml. Remplacez mse.XX.nacos.mse.aliyuncs.com par l'endpoint public de votre instance Nacos, qui est le même endpoint que celui configuré dans 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>

    L'élément dubbo:registry pointe le consommateur vers le même registre que le fournisseur, et l'élément dubbo:reference s'abonne à l'interface com.alibaba.mse.IHelloService exposée par le fournisseur.

  5. Dans com.alibaba.mse, créez une classe nommée Consumer. Utilisez le code suivant pour charger le contexte Spring dans la méthode main de Consumer et appeler la méthode sayHello du service abonné.

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

Étape 6 : Vérifier l'appel du consommateur vers le fournisseur

Dans cette étape, vous confirmez que le consommateur découvre le fournisseur via le registre MSE Nacos et reçoit la réponse de la méthode sayHello. Le consommateur transmet mse en tant qu'argument, et IHelloServiceImpl renvoie hello suivi de cet argument.

  1. Confirmez que le processus fournisseur démarré à l'étape 4 est toujours en cours d'exécution.

  2. Exécutez la méthode main de Consumer.

  3. Vérifiez la sortie de la console du projet consommateur. La sortie suivante indique que le consommateur a appelé le fournisseur avec succès :

    hello mse

Si l'appel échoue ou si aucune sortie n'est renvoyée, vérifiez les configurations suivantes :

  • Disponibilité du fournisseur — Le processus fournisseur est en cours d'exécution et com.alibaba.mse.IHelloService apparaît dans la liste des services de l'instance MSE.

  • Adresse du registre — L'adresse dubbo:registry dans consumer.xml correspond à l'endpoint public que vous avez configuré dans provider.xml.

  • Nom de l'interface — L'interface dans l'élément dubbo:reference de consumer.xml correspond à com.alibaba.mse.IHelloService, qui est l'interface dans l'élément dubbo:service de provider.xml.

  • Liste d'autorisation — La liste d'autorisation de l'instance MSE autorise l'adresse de votre machine locale.