99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Dubbo3 注冊(cè)中心擴(kuò)展

2022-04-22 11:53 更新

擴(kuò)展說明

負(fù)責(zé)服務(wù)的注冊(cè)與發(fā)現(xiàn)。

擴(kuò)展接口

  • org.apache.dubbo.registry.RegistryFactory
  • org.apache.dubbo.registry.Registry

擴(kuò)展配置

<!-- 定義注冊(cè)中心 -->
<dubbo:registry id="xxx1" address="xxx://ip:port" />
<!-- 引用注冊(cè)中心,如果沒有配置registry屬性,將在ApplicationContext中自動(dòng)掃描registry配置 -->
<dubbo:service registry="xxx1" />
<!-- 引用注冊(cè)中心缺省值,當(dāng)<dubbo:service>沒有配置registry屬性時(shí),使用此配置 -->
<dubbo:provider registry="xxx1" />

擴(kuò)展契約

RegistryFactory.java:

public interface RegistryFactory {
    /**
     * 連接注冊(cè)中心.
     * 
     * 連接注冊(cè)中心需處理契約:<br>
     * 1. 當(dāng)設(shè)置check=false時(shí)表示不檢查連接,否則在連接不上時(shí)拋出異常。<br>
     * 2. 支持URL上的username:password權(quán)限認(rèn)證。<br>
     * 3. 支持backup=10.20.153.10備選注冊(cè)中心集群地址。<br>
     * 4. 支持file=registry.cache本地磁盤文件緩存。<br>
     * 5. 支持timeout=1000請(qǐng)求超時(shí)設(shè)置。<br>
     * 6. 支持session=60000會(huì)話超時(shí)或過期設(shè)置。<br>
     * 
     * @param url 注冊(cè)中心地址,不允許為空
     * @return 注冊(cè)中心引用,總不返回空
     */
    Registry getRegistry(URL url); 
}

RegistryService.java:

public interface RegistryService { // Registry extends RegistryService 
    /**
     * 注冊(cè)服務(wù).
     * 
     * 注冊(cè)需處理契約:<br>
     * 1. 當(dāng)URL設(shè)置了check=false時(shí),注冊(cè)失敗后不報(bào)錯(cuò),在后臺(tái)定時(shí)重試,否則拋出異常。<br>
     * 2. 當(dāng)URL設(shè)置了dynamic=false參數(shù),則需持久存儲(chǔ),否則,當(dāng)注冊(cè)者出現(xiàn)斷電等情況異常退出時(shí),需自動(dòng)刪除。<br>
     * 3. 當(dāng)URL設(shè)置了category=overrides時(shí),表示分類存儲(chǔ),缺省類別為providers,可按分類部分通知數(shù)據(jù)。<br>
     * 4. 當(dāng)注冊(cè)中心重啟,網(wǎng)絡(luò)抖動(dòng),不能丟失數(shù)據(jù),包括斷線自動(dòng)刪除數(shù)據(jù)。<br>
     * 5. 允許URI相同但參數(shù)不同的URL并存,不能覆蓋。<br>
     * 
     * @param url 注冊(cè)信息,不允許為空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
     */
    void register(URL url);
 
    /**
     * 取消注冊(cè)服務(wù).
     * 
     * 取消注冊(cè)需處理契約:<br>
     * 1. 如果是dynamic=false的持久存儲(chǔ)數(shù)據(jù),找不到注冊(cè)數(shù)據(jù),則拋IllegalStateException,否則忽略。<br>
     * 2. 按全URL匹配取消注冊(cè)。<br>
     * 
     * @param url 注冊(cè)信息,不允許為空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
     */
    void unregister(URL url);
 
    /**
     * 訂閱服務(wù).
     * 
     * 訂閱需處理契約:<br>
     * 1. 當(dāng)URL設(shè)置了check=false時(shí),訂閱失敗后不報(bào)錯(cuò),在后臺(tái)定時(shí)重試。<br>
     * 2. 當(dāng)URL設(shè)置了category=overrides,只通知指定分類的數(shù)據(jù),多個(gè)分類用逗號(hào)分隔,并允許星號(hào)通配,表示訂閱所有分類數(shù)據(jù)。<br>
     * 3. 允許以interface,group,version,classifier作為條件查詢,如:interface=com.alibaba.foo.BarService&version=1.0.0<br>
     * 4. 并且查詢條件允許星號(hào)通配,訂閱所有接口的所有分組的所有版本,或:interface=*&group=*&version=*&classifier=*<br>
     * 5. 當(dāng)注冊(cè)中心重啟,網(wǎng)絡(luò)抖動(dòng),需自動(dòng)恢復(fù)訂閱請(qǐng)求。<br>
     * 6. 允許URI相同但參數(shù)不同的URL并存,不能覆蓋。<br>
     * 7. 必須阻塞訂閱過程,等第一次通知完后再返回。<br>
     * 
     * @param url 訂閱條件,不允許為空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
     * @param listener 變更事件監(jiān)聽器,不允許為空
     */
    void subscribe(URL url, NotifyListener listener);
 
    /**
     * 取消訂閱服務(wù).
     * 
     * 取消訂閱需處理契約:<br>
     * 1. 如果沒有訂閱,直接忽略。<br>
     * 2. 按全URL匹配取消訂閱。<br>
     * 
     * @param url 訂閱條件,不允許為空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
     * @param listener 變更事件監(jiān)聽器,不允許為空
     */
    void unsubscribe(URL url, NotifyListener listener);
 
    /**
     * 查詢注冊(cè)列表,與訂閱的推模式相對(duì)應(yīng),這里為拉模式,只返回一次結(jié)果。
     * 
     * @see org.apache.dubbo.registry.NotifyListener#notify(List)
     * @param url 查詢條件,不允許為空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
     * @return 已注冊(cè)信息列表,可能為空,含義同{@link org.apache.dubbo.registry.NotifyListener#notify(List<URL>)}的參數(shù)。
     */
    List<URL> lookup(URL url);
 
}

NotifyListener.java:

public interface NotifyListener { 
    /**
     * 當(dāng)收到服務(wù)變更通知時(shí)觸發(fā)。
     * 
     * 通知需處理契約:<br>
     * 1. 總是以服務(wù)接口和數(shù)據(jù)類型為維度全量通知,即不會(huì)通知一個(gè)服務(wù)的同類型的部分?jǐn)?shù)據(jù),用戶不需要對(duì)比上一次通知結(jié)果。<br>
     * 2. 訂閱時(shí)的第一次通知,必須是一個(gè)服務(wù)的所有類型數(shù)據(jù)的全量通知。<br>
     * 3. 中途變更時(shí),允許不同類型的數(shù)據(jù)分開通知,比如:providers, consumers, routes, overrides,允許只通知其中一種類型,但該類型的數(shù)據(jù)必須是全量的,不是增量的。<br>
     * 4. 如果一種類型的數(shù)據(jù)為空,需通知一個(gè)empty協(xié)議并帶category參數(shù)的標(biāo)識(shí)性URL數(shù)據(jù)。<br>
     * 5. 通知者(即注冊(cè)中心實(shí)現(xiàn))需保證通知的順序,比如:?jiǎn)尉€程推送,隊(duì)列串行化,帶版本對(duì)比。<br>
     * 
     * @param urls 已注冊(cè)信息列表,總不為空,含義同{@link org.apache.dubbo.registry.RegistryService#lookup(URL)}的返回值。
     */
    void notify(List<URL> urls);
 
}

已知擴(kuò)展

org.apache.dubbo.registry.support.dubbo.DubboRegistryFactory

擴(kuò)展示例

Maven 項(xiàng)目結(jié)構(gòu):

src
 |-main
    |-java
        |-com
            |-xxx
                |-XxxRegistryFactoryjava (實(shí)現(xiàn)RegistryFactory接口)
                |-XxxRegistry.java (實(shí)現(xiàn)Registry接口)
    |-resources
        |-META-INF
            |-dubbo
                |-org.apache.dubbo.registry.RegistryFactory (純文本文件,內(nèi)容為:xxx=com.xxx.XxxRegistryFactory)

XxxRegistryFactory.java:

package com.xxx;
 
import org.apache.dubbo.registry.RegistryFactory;
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.common.URL;
 
public class XxxRegistryFactory implements RegistryFactory {
    public Registry getRegistry(URL url) {
        return new XxxRegistry(url);
    }
}

XxxRegistry.java:

package com.xxx;
 
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.common.URL;
 
public class XxxRegistry implements Registry {
    public void register(URL url) {
        // ...
    }
    public void unregister(URL url) {
        // ...
    }
    public void subscribe(URL url, NotifyListener listener) {
        // ...
    }
    public void unsubscribe(URL url, NotifyListener listener) {
        // ...
    }
}

META-INF/dubbo/org.apache.dubbo.registry.RegistryFactory:

xxx=com.xxx.XxxRegistryFactory


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)