| |
| <!DOCTYPE HTML> |
| <html lang="" > |
| <head> |
| <meta charset="UTF-8"> |
| <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> |
| <title>6.9 注册中心扩展 · GitBook</title> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| <meta name="description" content=""> |
| <meta name="generator" content="GitBook 3.2.2"> |
| |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/style.css"> |
| |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css"> |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/gitbook-plugin-search/search.css"> |
| |
| |
| |
| <link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <meta name="HandheldFriendly" content="true"/> |
| <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> |
| <meta name="apple-mobile-web-app-capable" content="yes"> |
| <meta name="apple-mobile-web-app-status-bar-style" content="black"> |
| <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png"> |
| <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon"> |
| |
| |
| <link rel="next" href="监控中心扩展.html" /> |
| |
| |
| <link rel="prev" href="合并结果扩展.html" /> |
| |
| |
| </head> |
| <body> |
| |
| <div class="book"> |
| <div class="book-summary"> |
| |
| |
| <div id="book-search-input" role="search"> |
| <input type="text" placeholder="Type to search" /> |
| </div> |
| |
| |
| <nav role="navigation"> |
| |
| |
| |
| <ul class="summary"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li class="chapter " data-level="1.1" data-path="../"> |
| |
| <a href="../"> |
| |
| |
| Introduction |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.2" data-path="../contribution.html"> |
| |
| <a href="../contribution.html"> |
| |
| |
| 1 contribution |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.3" data-path="../版本管理.html"> |
| |
| <a href="../版本管理.html"> |
| |
| |
| 2 版本管理 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.4" data-path="../源码构建.html"> |
| |
| <a href="../源码构建.html"> |
| |
| |
| 3 源码构建 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.5" data-path="../框架设计.html"> |
| |
| <a href="../框架设计.html"> |
| |
| |
| 4 框架设计 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.6" data-path="../扩展点加载.html"> |
| |
| <a href="../扩展点加载.html"> |
| |
| |
| 5 扩展点加载 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7" data-path="introduction.html"> |
| |
| <a href="introduction.html"> |
| |
| |
| 6 SPI参考手册 |
| |
| </a> |
| |
| |
| |
| <ul class="articles"> |
| |
| |
| <li class="chapter " data-level="1.7.1" data-path="协议扩展.html"> |
| |
| <a href="协议扩展.html"> |
| |
| |
| 6.1 协议扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.2" data-path="调用拦截扩展.html"> |
| |
| <a href="调用拦截扩展.html"> |
| |
| |
| 6.2 调用拦截扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.3" data-path="引用监听扩展.html"> |
| |
| <a href="引用监听扩展.html"> |
| |
| |
| 6.3 引用监听扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.4" data-path="暴露监听扩展.html"> |
| |
| <a href="暴露监听扩展.html"> |
| |
| |
| 6.4 暴露监听扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.5" data-path="集群扩展.html"> |
| |
| <a href="集群扩展.html"> |
| |
| |
| 6.5 集群扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.6" data-path="路由扩展.html"> |
| |
| <a href="路由扩展.html"> |
| |
| |
| 6.6 路由扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.7" data-path="负载均衡扩展.html"> |
| |
| <a href="负载均衡扩展.html"> |
| |
| |
| 6.7 负载均衡扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.8" data-path="合并结果扩展.html"> |
| |
| <a href="合并结果扩展.html"> |
| |
| |
| 6.8 合并结果扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter active" data-level="1.7.9" data-path="注册中心扩展.html"> |
| |
| <a href="注册中心扩展.html"> |
| |
| |
| 6.9 注册中心扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.10" data-path="监控中心扩展.html"> |
| |
| <a href="监控中心扩展.html"> |
| |
| |
| 6.10 监控中心扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.11" data-path="扩展点加载扩展.html"> |
| |
| <a href="扩展点加载扩展.html"> |
| |
| |
| 6.11 扩展点加载扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.12" data-path="动态代理扩展.html"> |
| |
| <a href="动态代理扩展.html"> |
| |
| |
| 6.12 动态代理扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.13" data-path="编译器扩展.html"> |
| |
| <a href="编译器扩展.html"> |
| |
| |
| 6.13 编译器扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.14" data-path="消息派发扩展.html"> |
| |
| <a href="消息派发扩展.html"> |
| |
| |
| 6.14 消息派发扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.15" data-path="线程池扩展.html"> |
| |
| <a href="线程池扩展.html"> |
| |
| |
| 6.15 线程池扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.16" data-path="序列化扩展.html"> |
| |
| <a href="序列化扩展.html"> |
| |
| |
| 6.16 序列化扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.17" data-path="网络传输扩展.html"> |
| |
| <a href="网络传输扩展.html"> |
| |
| |
| 6.17 网络传输扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.18" data-path="信息交换扩展.html"> |
| |
| <a href="信息交换扩展.html"> |
| |
| |
| 6.18 信息交换扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.19" data-path="组网扩展.html"> |
| |
| <a href="组网扩展.html"> |
| |
| |
| 6.19 组网扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.20" data-path="Telnet命令扩展.html"> |
| |
| <a href="Telnet命令扩展.html"> |
| |
| |
| 6.20 Telnet命令扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.21" data-path="状态检查扩展.html"> |
| |
| <a href="状态检查扩展.html"> |
| |
| |
| 6.21 状态检查扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.22" data-path="容器扩展.html"> |
| |
| <a href="容器扩展.html"> |
| |
| |
| 6.22 容器扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.23" data-path="页面扩展.html"> |
| |
| <a href="页面扩展.html"> |
| |
| |
| 6.23 页面扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.24" data-path="缓存扩展.html"> |
| |
| <a href="缓存扩展.html"> |
| |
| |
| 6.24 缓存扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.25" data-path="验证扩展.html"> |
| |
| <a href="验证扩展.html"> |
| |
| |
| 6.25 验证扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.7.26" data-path="日志适配扩展.html"> |
| |
| <a href="日志适配扩展.html"> |
| |
| |
| 6.26 日志适配扩展 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| </ul> |
| |
| </li> |
| |
| <li class="chapter " data-level="1.8" data-path="../技术兼容性测试.html"> |
| |
| <a href="../技术兼容性测试.html"> |
| |
| |
| 7 技术兼容性测试 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.9" data-path="../公共契约.html"> |
| |
| <a href="../公共契约.html"> |
| |
| |
| 8 公共契约 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.10" data-path="../坏味道.html"> |
| |
| <a href="../坏味道.html"> |
| |
| |
| 9 坏味道 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.11" data-path="../编码约定.html"> |
| |
| <a href="../编码约定.html"> |
| |
| |
| 10 编码约定 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.12" data-path="../检查列表.html"> |
| |
| <a href="../检查列表.html"> |
| |
| |
| 11 检查列表 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class="chapter " data-level="1.13" data-path="../设计原则.html"> |
| |
| <a href="../设计原则.html"> |
| |
| |
| 12 设计原则 |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| |
| |
| |
| <li class="divider"></li> |
| |
| <li> |
| <a href="https://www.gitbook.com" target="blank" class="gitbook-link"> |
| Published with GitBook |
| </a> |
| </li> |
| </ul> |
| |
| |
| </nav> |
| |
| |
| </div> |
| |
| <div class="book-body"> |
| |
| <div class="body-inner"> |
| |
| |
| |
| <div class="book-header" role="navigation"> |
| |
| |
| <!-- Title --> |
| <h1> |
| <i class="fa fa-circle-o-notch fa-spin"></i> |
| <a href=".." >6.9 注册中心扩展</a> |
| </h1> |
| </div> |
| |
| |
| |
| |
| <div class="page-wrapper" tabindex="-1" role="main"> |
| <div class="page-inner"> |
| |
| <div id="book-search-results"> |
| <div class="search-noresults"> |
| |
| <section class="normal markdown-section"> |
| |
| <h5 id="1-扩展说明">1. 扩展说明</h5> |
| <p>负责服务的注册与发现。</p> |
| <h5 id="2-扩展接口">2. 扩展接口</h5> |
| <ul> |
| <li><code>com.alibaba.dubbo.registry.RegistryFactory</code></li> |
| <li><code>com.alibaba.dubbo.registry.Registry</code></li> |
| </ul> |
| <h5 id="3-扩展配置">3. 扩展配置</h5> |
| <pre><code class="lang-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"xxx1"</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"xxx://ip:port"</span> /></span> <span class="hljs-comment"><!-- 定义注册中心 --></span> |
| <span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"xxx1"</span> /></span> <span class="hljs-comment"><!-- 引用注册中心,如果没有配置registry属性,将在ApplicationContext中自动扫描registry配置 --></span> |
| <span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"xxx1"</span> /></span> <span class="hljs-comment"><!-- 引用注册中心缺省值,当<dubbo:service>没有配置registry属性时,使用此配置 --></span> |
| </code></pre> |
| <h5 id="4-扩展契约">4. 扩展契约</h5> |
| <p>RegistryFactory.java</p> |
| <pre><code class="lang-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">RegistryFactory</span> </span>{ |
| <span class="hljs-comment">/** |
| * 连接注册中心. |
| * |
| * 连接注册中心需处理契约:<br> |
| * 1. 当设置check=false时表示不检查连接,否则在连接不上时抛出异常。<br> |
| * 2. 支持URL上的username:password权限认证。<br> |
| * 3. 支持backup=10.20.153.10备选注册中心集群地址。<br> |
| * 4. 支持file=registry.cache本地磁盘文件缓存。<br> |
| * 5. 支持timeout=1000请求超时设置。<br> |
| * 6. 支持session=60000会话超时或过期设置。<br> |
| * |
| * <span class="hljs-doctag">@param</span> url 注册中心地址,不允许为空 |
| * <span class="hljs-doctag">@return</span> 注册中心引用,总不返回空 |
| */</span> |
| <span class="hljs-function">Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span></span>; |
| } |
| </code></pre> |
| <p>RegistryService.java</p> |
| <pre><code class="lang-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">RegistryService</span> </span>{ <span class="hljs-comment">// Registry extends RegistryService </span> |
| <span class="hljs-comment">/** |
| * 注册服务. |
| * |
| * 注册需处理契约:<br> |
| * 1. 当URL设置了check=false时,注册失败后不报错,在后台定时重试,否则抛出异常。<br> |
| * 2. 当URL设置了dynamic=false参数,则需持久存储,否则,当注册者出现断电等情况异常退出时,需自动删除。<br> |
| * 3. 当URL设置了category=overrides时,表示分类存储,缺省类别为providers,可按分类部分通知数据。<br> |
| * 4. 当注册中心重启,网络抖动,不能丢失数据,包括断线自动删除数据。<br> |
| * 5. 允许URI相同但参数不同的URL并存,不能覆盖。<br> |
| * |
| * <span class="hljs-doctag">@param</span> url 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin |
| */</span> |
| <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span></span>; |
| |
| <span class="hljs-comment">/** |
| * 取消注册服务. |
| * |
| * 取消注册需处理契约:<br> |
| * 1. 如果是dynamic=false的持久存储数据,找不到注册数据,则抛IllegalStateException,否则忽略。<br> |
| * 2. 按全URL匹配取消注册。<br> |
| * |
| * <span class="hljs-doctag">@param</span> url 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin |
| */</span> |
| <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">unregister</span><span class="hljs-params">(URL url)</span></span>; |
| |
| <span class="hljs-comment">/** |
| * 订阅服务. |
| * |
| * 订阅需处理契约:<br> |
| * 1. 当URL设置了check=false时,订阅失败后不报错,在后台定时重试。<br> |
| * 2. 当URL设置了category=overrides,只通知指定分类的数据,多个分类用逗号分隔,并允许星号通配,表示订阅所有分类数据。<br> |
| * 3. 允许以interface,group,version,classifier作为条件查询,如:interface=com.alibaba.foo.BarService&version=1.0.0<br> |
| * 4. 并且查询条件允许星号通配,订阅所有接口的所有分组的所有版本,或:interface=*&group=*&version=*&classifier=*<br> |
| * 5. 当注册中心重启,网络抖动,需自动恢复订阅请求。<br> |
| * 6. 允许URI相同但参数不同的URL并存,不能覆盖。<br> |
| * 7. 必须阻塞订阅过程,等第一次通知完后再返回。<br> |
| * |
| * <span class="hljs-doctag">@param</span> url 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin |
| * <span class="hljs-doctag">@param</span> listener 变更事件监听器,不允许为空 |
| */</span> |
| <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">subscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span></span>; |
| |
| <span class="hljs-comment">/** |
| * 取消订阅服务. |
| * |
| * 取消订阅需处理契约:<br> |
| * 1. 如果没有订阅,直接忽略。<br> |
| * 2. 按全URL匹配取消订阅。<br> |
| * |
| * <span class="hljs-doctag">@param</span> url 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin |
| * <span class="hljs-doctag">@param</span> listener 变更事件监听器,不允许为空 |
| */</span> |
| <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">unsubscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span></span>; |
| |
| <span class="hljs-comment">/** |
| * 查询注册列表,与订阅的推模式相对应,这里为拉模式,只返回一次结果。 |
| * |
| * <span class="hljs-doctag">@see</span> com.alibaba.dubbo.registry.NotifyListener#notify(List) |
| * <span class="hljs-doctag">@param</span> url 查询条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin |
| * <span class="hljs-doctag">@return</span> 已注册信息列表,可能为空,含义同{<span class="hljs-doctag">@link</span> com.alibaba.dubbo.registry.NotifyListener#notify(List<URL>)}的参数。 |
| */</span> |
| <span class="hljs-function">List<URL> <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span></span>; |
| |
| } |
| </code></pre> |
| <p>NotifyListener.java</p> |
| <pre><code class="lang-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">NotifyListener</span> </span>{ |
| <span class="hljs-comment">/** |
| * 当收到服务变更通知时触发。 |
| * |
| * 通知需处理契约:<br> |
| * 1. 总是以服务接口和数据类型为维度全量通知,即不会通知一个服务的同类型的部分数据,用户不需要对比上一次通知结果。<br> |
| * 2. 订阅时的第一次通知,必须是一个服务的所有类型数据的全量通知。<br> |
| * 3. 中途变更时,允许不同类型的数据分开通知,比如:providers, consumers, routes, overrides,允许只通知其中一种类型,但该类型的数据必须是全量的,不是增量的。<br> |
| * 4. 如果一种类型的数据为空,需通知一个empty协议并带category参数的标识性URL数据。<br> |
| * 5. 通知者(即注册中心实现)需保证通知的顺序,比如:单线程推送,队列串行化,带版本对比。<br> |
| * |
| * <span class="hljs-doctag">@param</span> urls 已注册信息列表,总不为空,含义同{<span class="hljs-doctag">@link</span> com.alibaba.dubbo.registry.RegistryService#lookup(URL)}的返回值。 |
| */</span> |
| <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">notify</span><span class="hljs-params">(List<URL> urls)</span></span>; |
| |
| } |
| </code></pre> |
| <h5 id="5-已知扩展">5. 已知扩展</h5> |
| <p><code>com.alibaba.dubbo.registry.support.dubbo.DubboRegistryFactory</code></p> |
| <h5 id="6-扩展示例">6. 扩展示例</h5> |
| <p>Maven项目结构</p> |
| <pre><code>src |
| |-main |
| |-java |
| |-com |
| |-xxx |
| |-XxxRegistryFactoryjava (实现RegistryFactory接口) |
| |-XxxRegistry.java (实现Registry接口) |
| |-resources |
| |-META-INF |
| |-dubbo |
| |-com.alibaba.dubbo.registry.RegistryFactory (纯文本文件,内容为:xxx=com.xxx.XxxRegistryFactory) |
| </code></pre><p>XxxRegistryFactory.java</p> |
| <pre><code class="lang-java"><span class="hljs-keyword">package</span> com.xxx; |
| |
| <span class="hljs-keyword">import</span> com.alibaba.dubbo.registry.RegistryFactory; |
| <span class="hljs-keyword">import</span> com.alibaba.dubbo.registry.Registry; |
| <span class="hljs-keyword">import</span> com.alibaba.dubbo.common.URL; |
| |
| <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRegistryFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">RegistryFactory</span> </span>{ |
| <span class="hljs-function"><span class="hljs-keyword">public</span> Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span> </span>{ |
| <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxRegistry(url); |
| } |
| } |
| </code></pre> |
| <p>XxxRegistry.java</p> |
| <pre><code class="lang-java"><span class="hljs-keyword">package</span> com.xxx; |
| |
| <span class="hljs-keyword">import</span> com.alibaba.dubbo.registry.Registry; |
| <span class="hljs-keyword">import</span> com.alibaba.dubbo.registry.NotifyListener; |
| <span class="hljs-keyword">import</span> com.alibaba.dubbo.common.URL; |
| |
| <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRegistry</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Registry</span> </span>{ |
| <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span> </span>{ |
| <span class="hljs-comment">// ...</span> |
| } |
| <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">unregister</span><span class="hljs-params">(URL url)</span> </span>{ |
| <span class="hljs-comment">// ...</span> |
| } |
| <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">subscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span> </span>{ |
| <span class="hljs-comment">// ...</span> |
| } |
| <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">unsubscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span> </span>{ |
| <span class="hljs-comment">// ...</span> |
| } |
| } |
| </code></pre> |
| <p>META-INF/dubbo/com.alibaba.dubbo.registry.RegistryFactory</p> |
| <pre><code>xxx=com.xxx.XxxRegistryFactory |
| </code></pre> |
| |
| </section> |
| |
| </div> |
| <div class="search-results"> |
| <div class="has-results"> |
| |
| <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1> |
| <ul class="search-results-list"></ul> |
| |
| </div> |
| <div class="no-results"> |
| |
| <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1> |
| |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| |
| </div> |
| |
| |
| |
| <a href="合并结果扩展.html" class="navigation navigation-prev " aria-label="Previous page: 6.8 合并结果扩展"> |
| <i class="fa fa-angle-left"></i> |
| </a> |
| |
| |
| <a href="监控中心扩展.html" class="navigation navigation-next " aria-label="Next page: 6.10 监控中心扩展"> |
| <i class="fa fa-angle-right"></i> |
| </a> |
| |
| |
| |
| </div> |
| |
| <script> |
| var gitbook = gitbook || []; |
| gitbook.push(function() { |
| gitbook.page.hasChanged({"page":{"title":"6.9 注册中心扩展","level":"1.7.9","depth":2,"next":{"title":"6.10 监控中心扩展","level":"1.7.10","depth":2,"path":"SPI参考手册/监控中心扩展.md","ref":"./SPI参考手册/监控中心扩展.md","articles":[]},"previous":{"title":"6.8 合并结果扩展","level":"1.7.8","depth":2,"path":"SPI参考手册/合并结果扩展.md","ref":"./SPI参考手册/合并结果扩展.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"SPI参考手册/注册中心扩展.md","mtime":"2017-08-02T06:13:38.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2017-08-02T07:44:46.950Z"},"basePath":"..","book":{"language":""}}); |
| }); |
| </script> |
| </div> |
| |
| |
| <script src="../gitbook/gitbook.js"></script> |
| <script src="../gitbook/theme.js"></script> |
| |
| |
| <script src="../gitbook/gitbook-plugin-search/search-engine.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-search/search.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-lunr/lunr.min.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-lunr/search-lunr.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script> |
| |
| |
| |
| <script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script> |
| |
| |
| |
| </body> |
| </html> |
| |