zookeeper 自動配置更新

reactive 模式監(jiān)聽節(jié)點(diǎn),修改后立即感知,注意zk的watch 和不同操作callBack函數(shù)之間的區(qū)別

/**
 * @author haowq 2021/4/7 9:46
 */
public class WatcherCallBack implements Watcher, AsyncCallback.StatCallback, AsyncCallback.DataCallback {
    private ZooKeeper zk;
    private CountDownLatch latch = new CountDownLatch(1);
    private MyConfig myConfig;
    //Getter   Setter

    public void await() {
        //判斷節(jié)點(diǎn)是否存在,然后回調(diào)public void processResult(int rc, String path, Object ctx, Stat stat)
        zk.exists("/appConf", this, this, "AsyncCallback.StatCallback");
        try {
            latch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    //Wathcer process
    public void process(WatchedEvent event) {
        switch (event.getType()) {
            case None:
                break;
            case NodeCreated:
                zk.getData("/appConf", this, this, "AsyncCallback.DataCallback");
                break;
            case NodeDeleted:
                //容忍性
                myConfig.setContent("");
                latch = new CountDownLatch(1);
                break;
            case NodeDataChanged:
                zk.getData("/appConf", this, this, "AsyncCallback.DataCallback");
                break;
            case NodeChildrenChanged:
                break;
        }
    }

    //AsyncCallback.StatCallback
    public void processResult(int rc, String path, Object ctx, Stat stat) {
        System.out.println(rc);
        System.out.println(path);
        System.out.println(ctx.toString());
        if (stat != null) {
            zk.getData("/appConf", this, this, "AsyncCallback.DataCallback");
        }
    }


    //AAsyncCallback.DataCallback
    public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat) {
        if (data != null) {
            myConfig.setContent(new String(data));
            //放行
            latch.countDown();
        }
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容