日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZooKeeper入门(三)zookeeper的Watcher机制

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZooKeeper入门(三)zookeeper的Watcher机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

process方法是Watcher接口中的一個回調方法,當ZooKeeper向客戶端發送一個Watcher事件通知時,客戶端就會對相應的process方法進行回調,從而實現對事件的處理。

import java.util.concurrent.CountDownLatch; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.Watcher.Event.EventType; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat;public class WatcherZookeeper implements Watcher{// 集群連接地址private static final String CONNECT_ADDRES = "127.0.0.1:2181";// 會話超時時間private static final int SESSIONTIME = 2000;// 信號量,讓zk在連接之前等待,連接成功后才能往下走.private static final CountDownLatch countDownLatch = new CountDownLatch(1);private static String LOG_MAIN = "【main】 ";private ZooKeeper zk;public void createConnection(String connectAddres, int sessionTimeOut) {try {zk = new ZooKeeper(connectAddres, sessionTimeOut, this);System.out.println(LOG_MAIN + "zk 開始啟動連接服務器....");countDownLatch.await();} catch (Exception e) {e.printStackTrace();}}public boolean createPath(String path, String data) {try {this.exists(path, true);this.zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println(LOG_MAIN + "節點創建成功, Path:" + path + ",data:" + data);} catch (Exception e) {e.printStackTrace();return false;}return true;}/*** 判斷指定節點是否存在* * @param path* 節點路徑*/public Stat exists(String path, boolean needWatch) {try {return this.zk.exists(path, needWatch);} catch (Exception e) {e.printStackTrace();return null;}}public boolean updateNode(String path,String data) throws KeeperException, InterruptedException {exists(path, true);this.zk.setData(path, data.getBytes(), -1);return false;}public void process(WatchedEvent watchedEvent) {// 獲取事件狀態KeeperState keeperState = watchedEvent.getState();// 獲取事件類型EventType eventType = watchedEvent.getType();// zk 路徑String path = watchedEvent.getPath();System.out.println("進入到 process() keeperState:" + keeperState + ", eventType:" + eventType + ", path:" + path);// 判斷是否建立連接if (KeeperState.SyncConnected == keeperState) {if (EventType.None == eventType) {// 如果建立建立成功,讓后程序往下走System.out.println(LOG_MAIN + "zk 建立連接成功!");countDownLatch.countDown();} else if (EventType.NodeCreated == eventType) {System.out.println(LOG_MAIN + "事件通知,新增node節點" + path);} else if (EventType.NodeDataChanged == eventType) {System.out.println(LOG_MAIN + "事件通知,當前node節點" + path + "被修改....");}else if (EventType.NodeDeleted == eventType) {System.out.println(LOG_MAIN + "事件通知,當前node節點" + path + "被刪除....");}}System.out.println("--------------------------------------------------------");}public static void main(String[] args) throws KeeperException, InterruptedException {WatcherZookeeper zkClientWatcher = new WatcherZookeeper();zkClientWatcher.createConnection(CONNECT_ADDRES, SESSIONTIME);boolean createResult = zkClientWatcher.createPath("/qushenWatcher", "pa-644064");}}

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ZooKeeper入门(三)zookeeper的Watcher机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。