文档章节

【Storm-dubbo】服务调用

止静
 止静
发布于 2014/08/21 13:40
字数 738
阅读 1.5K
收藏 1


阅读背景:1 您需要了解什么是dubbo,如何使用dubbo拆分服务

                2:您需要了解如何将所需要的服务注册到dubbo

                3: 您还可能需要了解如何使用zookeeper



本章主题:针对一个具体的例子,来说明,如何调用dubbo的服务。



首先: 先保证您引入了以下的jar包:


如果您的工程不是Mavn工程,并且您是在Storm之中调用的dubbo服务。那么以上的jar包是您需要放在工程之中的几个jar包


请参看右图,在其中我,我做了一个简易的区分:


dubbo: 所有duboo相关的jar包

lib: 所有Storm 所需要的jar包

NotStorm: 并不是Storm 所需要的jar包

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。

© 著作权归作者所有

止静
粉丝 122
博文 134
码字总数 125762
作品 0
东城
技术主管
私信 提问
Apache Slider + Storm

Apache Slider + Storm 系统环境 安装如下组件,部署可用环境 JDK 1.7.0_79 Apache Zookeeper 3.4.* Apache Zookeeper Apache Hadoop 2.6.* Apache Hadoop Apache Storm 0.9.4 Apache Storm......

Yulong_
2016/09/21
514
0
Storm同步调用之DRPC模型探讨

  摘要:Storm的编程模型是一个有向无环图,决定了storm的spout接收到外部系统的请求后,spout并不能得到bolt的处理结果并将结果返回给外部请求。所以也就决定了storm无法提供对外部系统的同...

刘洋intsmaze
2017/09/28
0
0
Storm【技术文档】 - Storm的Acker机制

基本概念的解析 对于Storm,有一个相对比较重要的概念就是 "Guarantee no data loss" -- 可靠性 很明显,要做到这个特性,必须要tracker 每一个data的去向和结果,Storm是如何做到的 -》 那就...

止静
2014/06/23
674
0
【Storm】Storm简介及Storm集群的安装部署

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/86557602 1、Storm概述 (1)Storm简介 Storm最早是由BackType公司开发的实时...

魏晓蕾
2019/01/20
0
0
年薪40万的大数据工程师是如何安装Strom

Strom集群的安装配置 主机规划 一、准备服务器 l 关闭防火墙 chkconfig iptables off && setenforce 0 l 创建用户 groupadd hadoop && useradd hadoop  && usermod -a -G hadoop hadoop l ......

爱尚实训
2018/04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

toast组件单元测试

先看是否存在 describe('Toast', () => { it('存在.', () => { expect(Toast).to.be.exist }) }); 看属性,我们要测 ToastVue 和 plugin.js describe('Toast', () =>......

ories
19分钟前
57
0
如何将整个MySQL数据库字符集和排序规则转换为UTF-8?

如何将整个MySQL数据库字符集转换为UTF-8并将排序规则转换为UTF-8? #1楼 在命令行外壳上 如果您是命令行外壳程序之一,则可以非常快速地执行此操作。 只需填写“ dbname”:D DB="dbname"(...

javail
59分钟前
80
0
开源矿工系统内部的层

开源矿工系统内部的层 所谓“层”、“界”、“域”、“集合”,这些词其实是在试图表达物质系统的组成结构和运动景象中的规矩,这些不同人发明的词都是来源于对同一个规律的观察、发现、表达...

NTMiner
今天
88
0
如何将文件从一个git repo移到另一个(不是克隆),保留历史记录

我们的Git储存库是作为单个Monster SVN储存库的一部分开始的,其中每个项目都有自己的树,如下所示: project1/branches /tags /trunkproject2/branches /tags ...

技术盛宴
今天
65
0
数据结构之数组-c代码实现

在上一篇文章里讲了数组的具体内容,然后自己使用c语言对数组进行了实现。 其中定义了一个结构体,定义了长度、已使用长度和地址指针。 定义alloc函数来分配内存空间 之后便是插入元素的ins...

无心的梦呓
今天
65
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部