在dubbo的基础上实现异步调用的时候,因为需要支持回调的“重试间隔时间”与“重试次数”等属性。因此,需要扩展dubbo.xsd,需要添加新的属性来支持这种扩展。

dubbo 的xsd是基于spring的schema扩展实现的,一般来说,基于spring的schema扩展要实现一个自定义的配置需要以下步骤:

1.设计配置属性和JavaBean

2.编写XSD文件

3.编写NamespaceHandler和BeanDefinitionParser完成解析工作

4.编写spring.handlers和spring.schemas串联所有部件

5.在spring的配置文件中应用。

先来看看dubbo的JavaBean的结构:

RPC的核心理念是方法,正如其定义一般:远程方法调用。那么这里面的一个核心思想就是方法。从上图的类结构关系可以看出,方法是在接口之上(多个方法组成接口),接口在服务消费者与服务提供者之上(服务消费者与服务提供者之间通过接口来进行远程方法调用)。

不扯这么多,回到正题,从上图可以看出来,在dubbo的JavaBean结构中,大体上可以分为7类。

1.服务相关,包括:方法、服务提供者、服务消费者;

2.注解相关,其实就是以注解的形式来实现xml的部分功能;

3.应用相关,在部署的时候,可以指定应用的一些基本属性;

4.模块相关,这是一个应用层面的模块化,仅仅是逻辑层面的;

5.监控相关,提供了一个简易的监控web端,可以看到一些基础数据;

6.协议相关,支持多协议的发布服务,同时提供一系列的优化参数;

7.注册中心相关,基于SOA的概念,服务提供者将自身注册到一个注册中心,服务消费者去该注册中心查询自己需要的服务。服务的维护交由注册中心维护(最重要的是,dubbo并不过度依靠注册中心,因为在服务消费者本地有一份服务提供者列表缓存,因此,即使注册中心宕机一会,服务消费者还是可以正常和服务提供者通讯),目前基于zk实现。

我们的目的是想在现有的callback实现中添加新的属性。但是callback是在argument中定义的。因此,

第一步:找到xsd中对应的argumentType定义,在其中添加上需要的字段;

第二步:在argument对应的JavaBean文件ArgumentConfig中,添加相应的字段,并且提供get/set方法。到这一步,基本的扩展就结束了,简单的debug以下就可以看到,添加的属性已经加入服务注册时的url中了。

dubbo-RPC学习(一)自定义配置的更多相关文章

  1. Dubbo -- 系统学习 笔记 -- 配置

    Dubbo -- 系统学习 笔记 -- 目录 配置 Xml配置 属性配置 注解配置 API配置 配置 Xml配置 配置项说明 :详细配置项,请参见:配置参考手册 API使用说明 : 如果不想使用Spr ...

  2. Dubbo -- 系统学习 笔记 -- 配置参考手册

    Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...

  3. dubbo 提示No such extension Filter for filter/com.alibaba.dubbo.rpc.Filter

    配置时 <dubbo:provider filter="DubboExceptionFilter"></dubbo:provider> DubboExcep ...

  4. ASP.NET MVC 学习笔记-7.自定义配置信息(后续)

    自定义配置信息的高级应用 通过上篇博文对简单的自定义配置信息的学习,使得更加灵活的控制系统配置信息.实际项目中,这种配置的灵活度往往无法满足项目的灵活度和扩展性. 比如,一个配置信息有三部分组成,而每 ...

  5. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  6. ASP.NET MVC 学习笔记-7.自定义配置信息

    ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, <appSettings> <add key="LogInf ...

  7. dubbo入门学习(四)-----dubbo配置

    配置来源 首先,从Dubbo支持的配置来源说起,默认有四种配置来源: JVM System Properties,-D参数 Externalized Configuration,外部化配置 Servi ...

  8. SpringBoot基础学习(三) 自定义配置、随机数设置及参数间引用

    自定义配置 SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配置都可以写在全局配置文件application.peroperties中,SpringBoot会自动加载全局配置文件从而 ...

  9. 基于Spring的可扩展Schema进行开发自定义配置标签支持

    一.背景 最近和朋友一起想开发一个类似alibaba dubbo的功能的工具,其中就用到了基于Spring的可扩展Schema进行开发自定义配置标签支持,通过上网查资料自己写了一个demo.今天在这里 ...

  10. Netty自娱自乐之类Dubbo RPC 框架设计构想 【上篇】

    之前在前一篇的<Netty自娱自乐之协议栈设计>,菜鸟我已经自娱自乐了设计协议栈,gitHub地址为https://github.com/vOoT/ncustomer-protocal.先 ...

随机推荐

  1. 路径 (Path)–nodejs

    本模块包含一套用于处理和转换文件路径的工具集.几乎所有的方法只做字符串变换, 不会调用文件系统检查路径是否有效. 通过 require('path') 来加载此模块.以下是本模块所提供的方法: pat ...

  2. 【JAVA版】Storm程序整合Kafka、Mongodb示例及部署

    一.环境 一台Centos6.5主机 Mongo 3.0 Kafka_2.11-0.8.2.1 Storm-0.9.5 Zookeeper-3.4.6 java 1.7 (后因在mac上打包的jar由 ...

  3. 快速开发 jQuery 插件的 10 大技巧(转)

    转自:http://www.oschina.net/news/41776/jquery-10-tips 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模 ...

  4. 【sgu282】Isomorphism

    题意: 给出n(n<=53)点的无向完全图 要将每条边染上m(m<=1000)种颜色的一种 只改变顶点编号的图视为同种方案 求本质不同方案数%p(p>n且为质树)的值 题解: 这题貌 ...

  5. http协议中的Content-Type

    今天对http协议中的Content-Type有所理解了 它的主要功给我的感觉,还是在前台(客户端)给服务器传输数据时,描述这个数据的格式. 比如,我只传一个表单数据,但这个表单中只有文本,没有其它的 ...

  6. 记录一次Android交叉编译ffmpeg排查错误

    Android版本手机直播引擎中,引用了libvlc开源库.项目接过来,发现编译脚本中使用了很多用户名下的绝对路径.项目相关人离职,导致这个脚本实际上已经废掉.而且不知道相关路径下有没有其他文件和第三 ...

  7. Java 容器相关知识全面总结

    Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...

  8. Linux下文件的权限

    一.Linux下查看文件属性 命令为: [root@localhost ~]# ls -al 结果: ls是『list』的意思,重点在显示文件的文件名与相关属性.而选项『-al』则表示列出所有的文件详 ...

  9. Java邮件服务学习之四:邮箱服务客户端Spring Mail

    一.Spring Mail API Spring邮件抽象层的主要包为org.springframework.mail,Spring提供的邮件发送不仅支持简单邮件的发送.添加附件. 1.邮件发送的核心接 ...

  10. 【转】新建maven工程为什么jdk会是默认版本 而不是自己设置的版本?

    原文链接:为什么我eclipse新建项目的时候默认的是JRE1.5? 修改Maven中conf目录里的setting.xml文件内容,加上如下内容: <profiles> <!-- ...