dubbo入门--Hello World
Dubbo入門--Hello World
轉載自:http://blog.csdn.net/hanmov/article/details/66973957?locationNum=2&fps=1
- 介紹
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和?spring框架無縫集成。簡單來說,就是遠程服務提供接口,隱藏具體實現,調用方通過dubbo連接到遠程服務,通過接口可以調用方法進行操作或者獲取數據,而不用關心具體實現細節。 - ?Hello World
<1>?搭建Java?maven項目,引入對應的DubboJar包依賴
<!--Dubbo-阿里巴巴服務治理框架 Libs Begging--><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version></dependency><!--Dubbo-阿里巴巴服務治理框架 Libs Endding-->注:
<2>?實現DemoService和DemoServiceImpl的接口及實現類
dubbo是阿里開源的一個項目,但只維護到2.5.3版本,現在maven倉庫里面最新
的也只有這個版本,后續由dangdang團隊維護到了2.8.3版本,并命名為dubbox 地址:http://dangdangdotcom.github.io/dubbox/。
切記,這兩個版本并不兼容,筆者之前項目里面由于服務商用了dubbox,而本地一直在用dubbo2.5.3版本,一直出錯,花了很長時間才解決。
接口:package com.alibaba.dubbo.demo;public interface DemoService {String sayHello(String name); }
實現類:
package com.alibaba.dubbo.demo;import com.alibaba.dubbo.demo.DemoService;public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return "Hello " + name; } }
<2>dubbo是跟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 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" /><!-- 使用multicast廣播注冊中心暴露服務地址 -->
<dubbo:registry address="multicast://224.5.6.7:1234" /><!-- 用dubbo協議在20880端口暴露服務 -->
<dubbo:protocol name="dubbo" port="20880" /><!-- 聲明需要暴露的服務接口 -->
<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" /><!-- 和本地bean一樣實現服務 -->
<bean id="demoService" class="com.alibaba.dubbo.demo.DemoServiceImpl" /></beans>
dubbo:registry定義注冊中心和對外暴露的地址(給調用方使用),默認集成的是multicast注冊中心,一般正式環境中會用zookeeper來做,這里我們簡單就用默認的。?
dubbo:service聲明暴露的服務接口,這里是我們自己寫的一個DemoService接口和DemoServiceImpl實現類,后面接口提供給調用方。
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" /><!-- 使用multicast廣播注冊中心暴露發現服務地址 -->
<dubbo:registry protocol="multicast" address="224.5.6.7:1234"/><!-- 生成遠程服務代理,可以和本地bean一樣使用demoService -->
<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" /></beans>
dubbo:registry指定服務提供方的地址和協議?
dubbo:reference根據提供方提供的接口,生成遠程服務代理
3)模擬服務提供方和調用方:?
新建Java類Provider.java:
package com.alibaba.dubbo.demo.provider;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(); // 為保證服務一直開著,利用輸入流的阻塞來模擬 }
}
新建java類Consumer.java:
package com.alibaba.dubbo.demo.consumer;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.alibaba.dubbo.demo.DemoService;public class Consumer {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"consumer.xml"});//context.start();DemoService api = (DemoService)context.getBean("demoService"); // 獲取遠程服務代理System.out.println(api.sayHello("你好"));context.destroy();}
}
先運行Provider類,讓服務方運行,再運行Consumer類,控制臺打印“Hello 你好”信息,說明consumer通過Dubbo調用服務方的代碼成功。
總結
以上是生活随笔為你收集整理的dubbo入门--Hello World的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 起个姓胡的微信网名字
- 下一篇: 一颗树多少钱啊?