阅读背景:1 您须要了解什么是dubbo,如何使用dubbo拆分服务java
2:您须要了解如何将所须要的服务注册到dubbospring
3: 您还可能须要了解如何使用zookeeper
小程序
本章主题:针对一个具体的例子,来讲明,如何调用dubbo的服务。app
首先: 先保证您引入了如下的jar包:spa
若是您的工程不是Mavn工程,而且您是在Storm之中调用的dubbo服务。那么以上的jar包是您须要放在工程之中的几个jar包code
请参看右图,在其中我,我作了一个简易的区分:orm
dubbo: 全部duboo相关的jar包xml
lib: 全部Storm 所须要的jar包接口
NotStorm: 并非Storm 所须要的jar包get
Spring: 全部包含Spring的jar包
其次:请您务必配置好 application.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="service.mq.kafka" /> <!-- 使用zookeeper注册中心暴露发现服务地址 223.203.216.238 192.168.50.247:2181?backup=192.168.50.248:2181,192.168.50.249:2181 --> <dubbo:registry address="zookeeper://192.168.50.247:2181?backup=192.168.50.248:2181,192.168.50.249:2181" /> <!-- <dubbo:registry address="zookeeper://192.168.36.238:2181?backup=192.168.36.239:2181,192.168.36.240:2181,192.168.36.241:2181,192.168.36.242:2181" /> --> <!-- <dubbo:registry address="zookeeper://192.168.50.247:2181?backup=192.168.50.248:2181,192.168.50.249:2181" /> --> <!-- 用dubbo协议在1500端口暴露服务 --> <dubbo:protocol name="dubbo" port="20000" /> <!--接口 --> <!-- <dubbo:service timeout="5000" interface="com.wooboo.service.kafka.KafkaServie" ref="KafkaServiceimpl" /> --> <!--实现类 --> <!-- <bean id="KafkaServiceimpl" class="com.wooboo.service.kafka.KafkaServiceimpl" /> --> <dubbo:reference id="KafkaService" interface="com.wooboo.service.kafka.KafkaServie" /> <dubbo:reference id="productCacheService" interface="com.wooboo.service.product.service.ProductService" timeout="50000" /> <dubbo:reference id="productCategoryService" interface="com.wooboo.service.productcategory.service.ProductCategoryService" timeout="5000"/> </beans>
在以上的配置中:
1 reference id: 标识着具体的project 引用之中class的名称。
2 interface: 表示着经过dubbo服务,给咱们提供的接口的名称,在这里,一般须要将接口的名称注册到zookeeper服务之中。
3 zookeeper地址:
<dubbo:registry address="zookeeper://192.168.50.247:2181?backup=192.168.50.248:2181,192.168.50.249:2181" />
下面,请参看咱们的一个具体小程序:依据商品id,获得商品的其余信息
package test; import java.util.Set; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.wooboo.common.bean.ProductCache; import com.wooboo.common.bean.ProductCategoryCache; import com.wooboo.service.kafka.KafkaServie; import com.wooboo.service.product.service.ProductService; import com.wooboo.service.productcategory.service.ProductCategoryService; public class TestDubbo { public static ClassPathXmlApplicationContext context = null; static { context = new ClassPathXmlApplicationContext( new String[] { "applicationContext.xml" }); context.start(); } public static void main(String[] args) throws Exception { // 商品的Service ProductService productService = (ProductService) context .getBean("productCacheService"); // 商品分类的Service ProductCategoryService categoryService = (ProductCategoryService) context .getBean("productCategoryService"); long goodsid = 627L; ProductCache cache = productService.getProduct(goodsid); // Long productCategoryId = cache.getProductCategoryId(); // ProductCategoryCache categoryCache = categoryService .getProductCategory(productCategoryId); long parrent = categoryCache.getParent(); Set<Long> child = categoryCache.getChildren(); // System.err.println(parrent); } public static void p(Object o) { System.err.println(o.toString()); } }
在这个小程序之中,请注意本地咱们的
ProductCategoryService
须要在本地有这个class类存在。在方法的调用过程之中,getBean()中传递的是咱们在 xml文件之中配置的id名称。
到此,一个小的服务调用就完成了。 至于,如何向dubbo注册服务,提供Service,还请您自行GOOGLE。