Maison  >  Article  >  Java  >  Une instance Dubbo de framework de services distribués

Une instance Dubbo de framework de services distribués

零下一度
零下一度original
2017-07-20 18:08:082818parcourir

Dubbo est un framework de services distribués. Puisqu'il s'agit d'un service, il doit y avoir des fournisseurs de services et des appelants de services.

Ensuite, écrivons d’abord un fournisseur de services. Le projet utilise toujours le projet de l'article précédent Mise en route avec Spring 4.

Nous ajoutons la dépendance dubbo dans pom.xml


com. /groupId>
dubbo
2.5.3

Écrivez la classe suivante :

package com.mm.service;public interface WeatherService {public String getMessage(String city);
}

package com.mm.service.impl;import com.mm.service.WeatherService;public class WeatherServiceImpl implements WeatherService{

    @Overridepublic String getMessage(String city) {return city+"天气晴朗,局部有阵雨";
    }

}

Créer un nouveau fichier de configuration Spring (provider.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans                        ">
 
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="mm-weather"  />
 
    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
 
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.mm.service.WeatherService" ref="weatherService" />
 
    <!-- 和本地bean一样实现服务 -->
    <bean id="weatherService" class="com.mm.service.impl.WeatherServiceImpl" />
 
</beans>

Créez un nouveau programme de console pour le démarrage du service

package com.mm.main.dubbo;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class DubboProvider {public static void main(String[] args) throws IOException{
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"config/provider.xml"});
         context.start();
         System.in.read(); // 按任意键退出    }
}

Ensuite, nous démarrons le fournisseur de services et aucun message d'erreur n'est trouvé. Le service devrait. Cela a démarré avec succès.

Ensuite, nous écrivons à l'appelant du service, officiellement appelé le consommateur. Pour plus de commodité ici, j'ai directement copié une copie du code dans le nouvel espace de travail et j'ai simplement configuré Maven et Tomcat. Et supprimez la classe d’implémentation correspondante. La structure du code est la suivante :

le fichier consumer.xml est le suivant :

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans                        ">
 
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="mm-weather-consumer"  />
 
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="weatherService" interface="com.mm.service.WeatherService" />
 
</beans>

Créer un nouveau programme de console, utilisé pour les appels de service

package com.mm.main.dubbo;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mm.service.WeatherService;public class DubboConsumer {public static void main(String[] args) throws IOException{
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"config/consumer.xml"});
         WeatherService  demoService = (WeatherService )context.getBean("weatherService"); // 获取远程服务代理 String hello = demoService.getMessage("北京"); // 执行远程方法 System.out.println( hello ); // 显示调用结果    }
}

La sortie de la console est la suivante :

Parallèlement, nous Vous retrouverons également les informations suivantes dans la console du fournisseur :

Supplément supplémentaire :

au printemps Lors de l'utilisation de la balise dubbo dans le fichier de configuration, une erreur sera signalée. Cela ne devrait pas réellement l'affecter, c'est probablement un problème avec la vérification du fichier Eclipse. Mais c'était un peu désagréable, alors...

Tout d'abord, trouvez dubbo-2.5.3.jar dans l'entrepôt maven local, décompressez-le et trouvez le fichier xsd , comme suit :

Ouvrir la configuration d'éclipse

will La valeur de key est modifiée en :

Ensuite, faites un clic droit sur supplier.xml et validez. Après une longue attente, le message d'erreur disparaît.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn