Dubbo简单demo本地伪集群
简单实例
引入相关jar包,以下是我引入的,可以作为参考
1.applicationContext_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 http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 具体的实现bean --> <bean id="demoService" class="com.test.provider.impl.DemoServiceImpl" /> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="xixi_provider" /> <!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234"/> --> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.test.provider.DemoService" ref="demoService" /> </beans>
2.applicationContext_consumer.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 http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="hehe_consumer" /> <!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234"/> --> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService --> <dubbo:reference id="demoService" interface="com.test.provider.DemoService" /> </beans>
提供方main方法测试:
package com.test.test; import java.io.IOException; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) { ClassPathXmlApplicationContext contxt = new ClassPathXmlApplicationContext(new String[]{"applicationContext_provider.xml"}); contxt.start(); try { System.in.read();//为保证服务一直开着,利用输入流的阻塞来模拟 } catch (IOException e) { e.printStackTrace(); } } }
消费者main方法测试:
package com.test.test; import java.io.IOException; import java.util.List; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.test.model.User; import com.test.provider.DemoService; public class Consumer { public static void main(String[] args) { ClassPathXmlApplicationContext contxt = new ClassPathXmlApplicationContext(new String[]{"applicationContext_consumer.xml"}); contxt.start(); //正常使用中DemoService是通过服务提供者提供的jar包中获取 DemoService demoService = (DemoService) contxt.getBean("demoService"); String hello = demoService.sayHello("tom"); System.out.println(hello); List<User> list = demoService.getUsers(); if(list != null && list.size() > 0){ User user = null; for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); user = list.get(i); System.out.println(user.getName()+"~~~"+user.getAge()+"~~~~"+user.getSex()); } } try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } } }
接口类大家可以自己发挥,简单的可以做测试就可以,以上有问题的可以回复我!