com.alibaba.dubbo.registry.support
Class FailbackRegistry

java.lang.Object
  extended by com.alibaba.dubbo.registry.support.AbstractRegistry
      extended by com.alibaba.dubbo.registry.support.FailbackRegistry
All Implemented Interfaces:
Node, Registry, RegistryService
Direct Known Subclasses:
DubboRegistry, MulticastRegistry, RedisRegistry, ZookeeperRegistry

public abstract class FailbackRegistry
extends AbstractRegistry

FailbackRegistry. (SPI, Prototype, ThreadSafe)

Author:
william.liangf

Constructor Summary
FailbackRegistry(URL url)
           
 
Method Summary
 void destroy()
          destroy.
 Map<URL,Map<NotifyListener,List<URL>>> getFailedNotified()
           
 Set<URL> getFailedRegistered()
           
 Map<URL,Set<NotifyListener>> getFailedSubscribed()
           
 Set<URL> getFailedUnregistered()
           
 Map<URL,Set<NotifyListener>> getFailedUnsubscribed()
           
 Future<?> getRetryFuture()
           
 void register(URL url)
          注册数据,比如:提供者地址,消费者地址,路由规则,覆盖规则,等数据。
 void subscribe(URL url, NotifyListener listener)
          订阅符合条件的已注册数据,当有注册数据变更时自动推送.
 void unregister(URL url)
          取消注册.
 void unsubscribe(URL url, NotifyListener listener)
          取消订阅.
 
Methods inherited from class com.alibaba.dubbo.registry.support.AbstractRegistry
doSaveProperties, getCacheFile, getCacheProperties, getCacheUrls, getLastCacheChanged, getNotified, getRegistered, getSubscribed, getUrl, lookup, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.alibaba.dubbo.common.Node
isAvailable
 

Constructor Detail

FailbackRegistry

public FailbackRegistry(URL url)
Method Detail

getRetryFuture

public Future<?> getRetryFuture()

getFailedRegistered

public Set<URL> getFailedRegistered()

getFailedUnregistered

public Set<URL> getFailedUnregistered()

getFailedSubscribed

public Map<URL,Set<NotifyListener>> getFailedSubscribed()

getFailedUnsubscribed

public Map<URL,Set<NotifyListener>> getFailedUnsubscribed()

getFailedNotified

public Map<URL,Map<NotifyListener,List<URL>>> getFailedNotified()

register

public void register(URL url)
Description copied from interface: RegistryService
注册数据,比如:提供者地址,消费者地址,路由规则,覆盖规则,等数据。

注册需处理契约:
1. 当URL设置了check=false时,注册失败后不报错,在后台定时重试,否则抛出异常。
2. 当URL设置了dynamic=false参数,则需持久存储,否则,当注册者出现断电等情况异常退出时,需自动删除。
3. 当URL设置了category=routers时,表示分类存储,缺省类别为providers,可按分类部分通知数据。
4. 当注册中心重启,网络抖动,不能丢失数据,包括断线自动删除数据。
5. 允许URI相同但参数不同的URL并存,不能覆盖。

Specified by:
register in interface RegistryService
Overrides:
register in class AbstractRegistry
Parameters:
url - 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin

unregister

public void unregister(URL url)
Description copied from interface: RegistryService
取消注册.

取消注册需处理契约:
1. 如果是dynamic=false的持久存储数据,找不到注册数据,则抛IllegalStateException,否则忽略。
2. 按全URL匹配取消注册。

Specified by:
unregister in interface RegistryService
Overrides:
unregister in class AbstractRegistry
Parameters:
url - 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin

subscribe

public void subscribe(URL url,
                      NotifyListener listener)
Description copied from interface: RegistryService
订阅符合条件的已注册数据,当有注册数据变更时自动推送.

订阅需处理契约:
1. 当URL设置了check=false时,订阅失败后不报错,在后台定时重试。
2. 当URL设置了category=routers,只通知指定分类的数据,多个分类用逗号分隔,并允许星号通配,表示订阅所有分类数据。
3. 允许以interface,group,version,classifier作为条件查询,如:interface=com.alibaba.foo.BarService&version=1.0.0
4. 并且查询条件允许星号通配,订阅所有接口的所有分组的所有版本,或:interface=*&group=*&version=*&classifier=*
5. 当注册中心重启,网络抖动,需自动恢复订阅请求。
6. 允许URI相同但参数不同的URL并存,不能覆盖。
7. 必须阻塞订阅过程,等第一次通知完后再返回。

Specified by:
subscribe in interface RegistryService
Overrides:
subscribe in class AbstractRegistry
Parameters:
url - 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
listener - 变更事件监听器,不允许为空

unsubscribe

public void unsubscribe(URL url,
                        NotifyListener listener)
Description copied from interface: RegistryService
取消订阅.

取消订阅需处理契约:
1. 如果没有订阅,直接忽略。
2. 按全URL匹配取消订阅。

Specified by:
unsubscribe in interface RegistryService
Overrides:
unsubscribe in class AbstractRegistry
Parameters:
url - 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
listener - 变更事件监听器,不允许为空

destroy

public void destroy()
Description copied from interface: Node
destroy.

Specified by:
destroy in interface Node
Overrides:
destroy in class AbstractRegistry


Copyright © 2012–2017 Alibaba. All rights reserved.