Java操作方法Zookeeper
概要
Java操作Zookeeperには、zookeeper、zkclient、curatorなど、zkclientを使ってZookeeperを操作する方法がたくさんあります。
Maven依存:
作成ノード:
Javaノードの傍受はすべて永久的で、トリガは一回後に削除されません。
傍受ノードのサブノードの変化:
Java操作Zookeeperには、zookeeper、zkclient、curatorなど、zkclientを使ってZookeeperを操作する方法がたくさんあります。
Maven依存:
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
</dependency>
zkclientを使ってZookeeperを操作します。作成ノード:
@Test
public void testCreateNode() {
//
//zkServers: Zookeeper IP , Zookeeper
//sessionTimeout:
//connectionTimeout:
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
//
Student student = new Student();
student.setName(" ");
student.setAge(18);
student.setPhone("1585454xxxx");
//
zkClient.createPersistent("/p_node", student);
//
zkClient.createPersistentSequential("/ps_node", student);
//
zkClient.createEphemeral("/e_node", student);
//
zkClient.createEphemeralSequential("/ps_node", student);
//
// ,
zkClient.close();
}
ノードデータを読み出す:
@Test
public 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(" :" + JSON.toJSONString(student));
System.out.println(" :" + JSON.toJSONString(stat));
zkClient.close();
}
// :
// :{"age":18,"name":" ","phone":"1585454xxxx"}
// :{"aversion":0,"ctime":1619165355431,"cversion":0,"czxid":165,"dataLength":260,"ephemeralOwner":0,"mtime":1619165355431,"mzxid":165,"numChildren":0,"pzxid":165,"version":0}
ノードを削除:
@Test
public void testDeleteNode() {
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
// ,
zkClient.delete("/p_node");
// ,
zkClient.deleteRecursive("/p_node2");
zkClient.close();
}
ノードデータを更新:
@Test
public void testWriteNodeData() {
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
//
zkClient.writeData("/p_node", "myData1");
// CAS
//zkClient.writeData("/p_node", "myData2", 1);
zkClient.close();
}
サブノードのリストを取得:
@Test
public void testGetChildNodes() {
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
//
List<String> childList = zkClient.getChildren("/p_node");
childList.stream().forEach(System.out::println);
zkClient.close();
}
ノード傍受Javaノードの傍受はすべて永久的で、トリガは一回後に削除されません。
傍受ノードのサブノードの変化:
@Test
public void testSubscribeChildChanges() throws IOException {
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
zkClient.subscribeChildChanges("/p_node", new IZkChildListener(){
//
@Override
public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
System.out.println(parentPath + " ");
System.out.println(" :" + currentChilds);
}
});
// ,
System.in.read();
}
傍受ノードのデータ変化:
@Test
public void testSubscribeDataChanges() throws IOException {
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
zkClient.subscribeDataChanges("/p_node", new IZkDataListener(){
//
@Override
public void handleDataChange(String dataPath, Object data) throws Exception {
System.out.println(dataPath + " ");
System.out.println(" :" + data.toString());
}
//
@Override
public void handleDataDeleted(String dataPath) throws Exception {
System.out.println(dataPath + " ");
}
});
// ,
System.in.read();
}
Zookeeper接続状態の変化をモニターする:
@Test
public void testSubscribeStateChanges() throws IOException {
ZkClient zkClient = new ZkClient("127.0.0.1:2181", 60000, 5000);
zkClient.subscribeStateChanges(new IZkStateListener(){
// zookeeper
@Override
public void handleStateChanged(Watcher.Event.KeeperState state) throws Exception {
System.out.println(" " + state);
}
// zookeeper
@Override
public void handleNewSession() throws Exception {
System.out.println(" , ");
}
//
@Override
public void handleSessionEstablishmentError(Throwable error) throws Exception {
error.printStackTrace();
}
});
// ,
System.in.read();
}
以上はJavaを使ってZookeeperを操作する方法の詳細です。Java操作Zookeeperに関する資料は他の関連記事に注目してください。