最简单的dubbo应用包括三部分:服务提供者provider、服务消费者consumer、注册中心。
前两个都是我们自己编写的,第三个注册中心推荐使用稳定性更好的zookeeper。
所以我们需要先下载zookeeper: http://apache.fayea.com/zookeeper/current/
下载后解压到某个目录,进入里面的conf目录。将zoo_sample.cfg复制一份,改名为zoo.cfg。
修改其内容为
tickTime=2000 initLimit=10 syncLimit=5 dataDir=D:\\data\\zookeeper clientPort=2181
其中的dataDir可以自由修改。
进入zookeeper的bin目录,运行zkServer.cmd
{ 要测试是否运行良好的话可以运行zkCli.cmd }
接下来打开eclipse,新建maven项目,arctype使用默认的quickstart就可以。
修改pom.xml文件:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.0.13</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.3.6</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies>
在Java源文件夹下新建接口,这个接口要给provider和consumer都使用
public interface DemoService { public void sayHello(); public String returnHello(); public MsgInfo returnMsgInfo(MsgInfo info); }
新建其实现类
public class DemoServiceImpl implements DemoService{ public void sayHello() { System.err.println("Hello world."); } public String returnHello() { return "hello world"; } public MsgInfo returnMsgInfo(MsgInfo info) { info.getMsgs().add("done!"); return info; } }
新建一个测试实体
public class MsgInfo implements Serializable { int id; String name; List<String> msgs; //getters setters }
在资源文件夹下新建目录spring(虽然不是必要的,不过我们是和spring集成的)。
在里面新建xml文件dubbo-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"> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="hello-world-app" /> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.abc.qkdb.DemoService" ref="demoService" /> <!-- 和本地bean一样实现服务 --> <bean id="demoService" class="com.abc.qkdb.DemoServiceImpl" /> </beans>
其中的<dubbo:registry>就是注册中心这里使用的是zookeeper,其他选项可以参考http://dubbo.io/Administrator+Guide-zh.htm#AdministratorGuide-zh-Redis%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83%E5%AE%89%E8%A3%85
相同目录下新建dubbo-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="consumer-of-helloworld-app" /> <!--zookeeper注册中心 --> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService--> <dubbo:reference id="demoService" interface="com.abc.qkdb.DemoService" /> </beans>
注意里面也包含<dubbo:registry>结点。
回到Java文件夹,新建服务类
import java.io.IOException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class LuncherProvider { public static void main(String[] args) throws InterruptedException, IOException { LuncherProvider provider = new LuncherProvider(); provider.start(); System.in.read(); } void start() { String configLocation = "spring/dubbo-provider.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(configLocation); String[] names = context.getBeanDefinitionNames(); for (String name : names) { System.err.println(name); } } }
新建消费者类
import java.util.ArrayList; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class LuncherConsumer { public static void main(String[] args) { LuncherConsumer provider = new LuncherConsumer(); provider.start(); } void start() { String configLocation = "spring/dubbo-consumer.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(configLocation); DemoService ds = (DemoService) context.getBean("demoService"); String[] names = context.getBeanDefinitionNames(); System.out.print("Beans:"); for (String string : names) { System.out.println(string); } MsgInfo info = new MsgInfo(); info.setId(1); info.setName("ruisheh"); List<String> msgs = new ArrayList<String>(); msgs.add("I"); msgs.add("am"); msgs.add("test"); info.setMsgs(msgs); System.out.println(ds.returnMsgInfo(info).getMsgs()); System.err.println(ds.returnHello()); } }
编码完毕。
先运行LuncherProvider类,没有错误输出后(会输出context中的bean)运行LuncherConsumer,输出
[I, am, test, done!]
hello world
即为正常。
相关推荐
dubbo 测试,基于maven的web工程,provider服务提供者和consumer服务消费者
dubbo 服务提供方和服务消费方的代码
dubbo-admin在jdk1.8环境下运行,dubbo-admin在jdk1.8环境下运行dubbo-admin在jdk1.8环境下运行dubbo-admin在jdk1.8环境下运行dubbo-admin在jdk1.8环境下运行dubbo-admin在jdk1.8环境下运行dubbo-admin在jdk1.8环境下...
本地直接连接服务提供者,模拟发送数据测试,dubbo接口调试
本地搭建一套dubbo架构demo,包括zookeeper及后台DubboKeeper dubbo-admin后台管理 dubbo-monitor简易监控中心
dubbo提供者和消费者工程
本地搭建Dubbo-服务的示例Demo
Dubbo+Maven消费方和服务费, Dubbo+Maven消费方和服务费
这是一个windows下的本地dubbo客户端,便于在发开过程中的测试,配置方式 dubbo://127.0.0.1:9090
Apache Dubbo服务注册及服务消费源码分析
Dubbo分布式服务架构,对于研究大型Web服务器的并发技术的同学们有帮助。
仅供自己参考学习 docker dubbo 消费容器提供的服务 居然要50个字
dubbo提供者和消费者示例
1.SpringBoot聚合工程整合Dubbo,实现服务提供者与服务消费者的数据调用, 2.该项目提高了自己对Spring Boot整合Dubbo的理解,并深刻的认识到了服务者与消费者之间的调用及流程 4. Dubbo配置全部采用yml文件配置,...
Dubbo服务提供者以及消费者实例
dubbox编译、环境搭建、服务提供和服务消费 1 1 Dubbo源码构建 1 1.1 资源准备 1 1.2 配置maven设置 1 1.3 在eclipse中构件 3 2 搭dubbo-admin、dubbo-monitor控制台 16 2.1 配置zookeeper 16 2.2 配置dubbo-admin和...
dubbo测试实例(服务端和消费端)
dubbo的使用,其实只需要有注册中心,消费者,提供者这三个就可以使用了,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者...
dubbo-demo 官网下载的直接跑会因为本地环境和配置报错,这个本地测试跑起来没问题 jdk1.8 maven 3.3.9 dubbo-2.6.1 ....
本项目案例“妻子”作为消费者去调用生产者(“丈夫”)的服务--洗碗 本项目需要注意 @DubboReference private HusbandService husbandService; @EnableDubbo @DubboService 这几个注解不能忘,否则会报错,或者...