|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.alibaba.dubbo.registry.support.AbstractRegistry
public abstract class AbstractRegistry
AbstractRegistry. (SPI, Prototype, ThreadSafe)
Constructor Summary | |
---|---|
AbstractRegistry(URL url)
|
Method Summary | |
---|---|
void |
destroy()
destroy. |
void |
doSaveProperties(long version)
|
File |
getCacheFile()
|
Properties |
getCacheProperties()
|
List<URL> |
getCacheUrls(URL url)
|
AtomicLong |
getLastCacheChanged()
|
Map<URL,Map<String,List<URL>>> |
getNotified()
|
Set<URL> |
getRegistered()
|
Map<URL,Set<NotifyListener>> |
getSubscribed()
|
URL |
getUrl()
get url. |
List<URL> |
lookup(URL url)
查询符合条件的已注册数据,与订阅的推模式相对应,这里为拉模式,只返回一次结果。 |
void |
register(URL url)
注册数据,比如:提供者地址,消费者地址,路由规则,覆盖规则,等数据。 |
void |
subscribe(URL url,
NotifyListener listener)
订阅符合条件的已注册数据,当有注册数据变更时自动推送. |
String |
toString()
|
void |
unregister(URL url)
取消注册. |
void |
unsubscribe(URL url,
NotifyListener listener)
取消订阅. |
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 |
---|
public AbstractRegistry(URL url)
Method Detail |
---|
public URL getUrl()
Node
getUrl
in interface Node
public Set<URL> getRegistered()
public Map<URL,Set<NotifyListener>> getSubscribed()
public Map<URL,Map<String,List<URL>>> getNotified()
public File getCacheFile()
public Properties getCacheProperties()
public AtomicLong getLastCacheChanged()
public void doSaveProperties(long version)
public List<URL> getCacheUrls(URL url)
public List<URL> lookup(URL url)
RegistryService
lookup
in interface RegistryService
url
- 查询条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
com.alibaba.dubbo.registry.NotifyListener#notify(List)
的参数。NotifyListener.notify(List)
public void register(URL url)
RegistryService
注册需处理契约:
1. 当URL设置了check=false时,注册失败后不报错,在后台定时重试,否则抛出异常。
2. 当URL设置了dynamic=false参数,则需持久存储,否则,当注册者出现断电等情况异常退出时,需自动删除。
3. 当URL设置了category=routers时,表示分类存储,缺省类别为providers,可按分类部分通知数据。
4. 当注册中心重启,网络抖动,不能丢失数据,包括断线自动删除数据。
5. 允许URI相同但参数不同的URL并存,不能覆盖。
register
in interface RegistryService
url
- 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylinpublic void unregister(URL url)
RegistryService
取消注册需处理契约:
1. 如果是dynamic=false的持久存储数据,找不到注册数据,则抛IllegalStateException,否则忽略。
2. 按全URL匹配取消注册。
unregister
in interface RegistryService
url
- 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylinpublic void subscribe(URL url, NotifyListener listener)
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. 必须阻塞订阅过程,等第一次通知完后再返回。
subscribe
in interface RegistryService
url
- 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylinlistener
- 变更事件监听器,不允许为空public void unsubscribe(URL url, NotifyListener listener)
RegistryService
取消订阅需处理契约:
1. 如果没有订阅,直接忽略。
2. 按全URL匹配取消订阅。
unsubscribe
in interface RegistryService
url
- 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylinlistener
- 变更事件监听器,不允许为空public void destroy()
Node
destroy
in interface Node
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |