久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

如何使用Java操作Zookeeper

瀏覽:89日期:2022-08-13 11:57:44
簡介

Java操作Zookeeper有很多種方式,如zookeeper、zkclient、curator等等,下面介紹下使用zkclient的方式操作Zookeeper。

Maven依賴:

<dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.11</version></dependency>使用zkclient操作Zookeeper

創(chuàng)建節(jié)點(diǎn):

@Testpublic void testCreateNode() {//建立連接//zkServers: Zookeeper服務(wù)器IP地址和端口號(hào),如果是集群情況下用逗號(hào)分割多個(gè)Zookeeper服務(wù)器地址//sessionTimeout: 會(huì)話超時(shí)時(shí)間//connectionTimeout: 連接超時(shí)時(shí)間ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);//創(chuàng)建數(shù)據(jù)Student student = new Student();student.setName('張三');student.setAge(18);student.setPhone('1585454xxxx');//創(chuàng)建持久節(jié)點(diǎn)zkClient.createPersistent('/p_node', student);//創(chuàng)建持久順序節(jié)點(diǎn)zkClient.createPersistentSequential('/ps_node', student);//創(chuàng)建臨時(shí)節(jié)點(diǎn)zkClient.createEphemeral('/e_node', student);//創(chuàng)建臨時(shí)順序節(jié)點(diǎn)zkClient.createEphemeralSequential('/ps_node', student);//關(guān)閉客戶端//關(guān)閉客戶端的同時(shí),前面創(chuàng)建的臨時(shí)節(jié)點(diǎn)也會(huì)被刪除zkClient.close();}

讀取節(jié)點(diǎn)數(shù)據(jù):

@Testpublic void testReadNodeData() {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);Stat stat = new Stat();Student student = zkClient.readData('/p_node', stat);System.out.println('節(jié)點(diǎn)狀態(tài)信息:' + JSON.toJSONString(student));System.out.println('節(jié)點(diǎn)數(shù)據(jù):' + JSON.toJSONString(stat));zkClient.close();}//輸出結(jié)果://節(jié)點(diǎn)狀態(tài)信息:{'age':18,'name':'張三','phone':'1585454xxxx'}//節(jié)點(diǎn)數(shù)據(jù):{'aversion':0,'ctime':1619165355431,'cversion':0,'czxid':165,'dataLength':260,'ephemeralOwner':0,'mtime':1619165355431,'mzxid':165,'numChildren':0,'pzxid':165,'version':0}

刪除節(jié)點(diǎn):

@Testpublic void testDeleteNode() {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);//刪除節(jié)點(diǎn),不能刪除帶有子節(jié)點(diǎn)的節(jié)點(diǎn)zkClient.delete('/p_node');//刪除節(jié)點(diǎn),遞歸刪除所有子孫節(jié)點(diǎn)zkClient.deleteRecursive('/p_node2');zkClient.close();}

更新節(jié)點(diǎn)數(shù)據(jù):

@Testpublic void testWriteNodeData() {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);//更新節(jié)點(diǎn)數(shù)據(jù)zkClient.writeData('/p_node', 'myData1');//使用CAS更新節(jié)點(diǎn)數(shù)據(jù)//zkClient.writeData('/p_node', 'myData2', 1);zkClient.close();}

獲取子節(jié)點(diǎn)列表:

@Testpublic void testGetChildNodes() {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);//獲取子節(jié)點(diǎn)列表List<String> childList = zkClient.getChildren('/p_node');childList.stream().forEach(System.out::println);zkClient.close();}節(jié)點(diǎn)監(jiān)聽

Java節(jié)點(diǎn)監(jiān)聽都是永久的,觸發(fā)一次后不會(huì)被刪除。

監(jiān)聽節(jié)點(diǎn)的子節(jié)點(diǎn)變化:

@Testpublic void testSubscribeChildChanges() throws IOException {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);zkClient.subscribeChildChanges('/p_node', new IZkChildListener(){//子節(jié)點(diǎn)改變時(shí)調(diào)用@Overridepublic void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {System.out.println(parentPath + '子節(jié)點(diǎn)發(fā)生改變');System.out.println('當(dāng)前子節(jié)點(diǎn)列表:' + currentChilds);}});//阻塞客戶端,便于測試System.in.read();}

監(jiān)聽節(jié)點(diǎn)數(shù)據(jù)變化:

@Testpublic void testSubscribeDataChanges() throws IOException {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);zkClient.subscribeDataChanges('/p_node', new IZkDataListener(){//節(jié)點(diǎn)數(shù)據(jù)改變時(shí)調(diào)用@Overridepublic void handleDataChange(String dataPath, Object data) throws Exception {System.out.println(dataPath + '節(jié)點(diǎn)數(shù)據(jù)發(fā)生變化');System.out.println('修改后的數(shù)據(jù)為:' + data.toString());}//節(jié)點(diǎn)被刪除時(shí)調(diào)用@Overridepublic void handleDataDeleted(String dataPath) throws Exception {System.out.println(dataPath + '節(jié)點(diǎn)已被刪除');}});//阻塞客戶端,便于測試System.in.read();}

監(jiān)聽Zookeeper連接狀態(tài)變化:

@Testpublic void testSubscribeStateChanges() throws IOException {ZkClient zkClient = new ZkClient('127.0.0.1:2181', 60000, 5000);zkClient.subscribeStateChanges(new IZkStateListener(){//當(dāng)zookeeper連接狀態(tài)改變時(shí)調(diào)用@Overridepublic void handleStateChanged(Watcher.Event.KeeperState state) throws Exception {System.out.println('當(dāng)前狀態(tài)' + state);}//在zookeeper會(huì)話過期并且創(chuàng)建了一個(gè)新的會(huì)話之后調(diào)用@Overridepublic void handleNewSession() throws Exception {System.out.println('會(huì)話過期,已創(chuàng)建新的會(huì)話');}//當(dāng)會(huì)話不能重新建立時(shí)調(diào)用@Overridepublic void handleSessionEstablishmentError(Throwable error) throws Exception {error.printStackTrace();}});//阻塞客戶端,便于測試System.in.read();}

以上就是如何使用Java操作Zookeeper的詳細(xì)內(nèi)容,更多關(guān)于Java操作Zookeeper的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产一级影片 | 91精品久久久久久久久中文字幕 | 91精品一区| 国产一区二区精品在线观看 | 国产一级电影网 | 日韩视频一区二区 | 一本一本久久a久久精品综合妖精 | 成人网18免费网站 | 蜜臀网| 最新国产中文字幕 | 99色播 | 日日做 | 毛片黄片视频 | 亚洲精品在线免费 | 中文字幕一区二区三区四区 | a级毛片黄 | 成人精品在线视频 | 91福利在线导航 | 日韩一区二区免费视频 | 欧美日韩亚洲视频 | 精品久久久久久久久久久 | 日韩中文字幕国产 | 免费观看黄视频 | 一级黄色片子看看 | 在线看一区二区 | 日韩在线观看成人 | 在线播放国产视频 | 久久精品电影 | 天堂视频在线 | 精品日韩欧美一区二区三区 | 亚洲第一免费看片 | 日本在线播放 | 午夜精品视频 | 亚洲一区二区三区视频 | 国产一二三视频 | 中文字幕高清 | 成年人在线看片 | 天天干视频| 97人人干| www伊人| 精品99久久 |