zookeeper 實現 配置管理(Configuration Management)

1  Create a Demo Class and run

import java.io.IOException;

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.ZooKeeper;

public class ZoomkeepTest2 {

    // 創建一個與服務器的連接

    ZooKeeper zk = null;

    public ZoomkeepTest2() {

        try {

            zk = new ZooKeeper("127.0.0.1:2181", 500000, new WatcherImpl());

            // zk.getData("/zk-demo/watch-this", true, null);

            while (true) {

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            // 關閉連接

            if (null != zk) {

                try {

                    zk.close();

                } catch (InterruptedException e) {

                     e.printStackTrace();

                }

            }

        }

    }

    public class WatcherImpl implements Watcher {

        public void process(WatchedEvent event) {

            System.out.println("已經觸發了" + event.getType() + "事件!");

            if (event.getType().equals(EventType.NodeDataChanged)) {

                try {

                    System.out.println(new String(zk.getData("/zk-demo/watch-this"falsenull)));

                } catch (KeeperException e) {

                    e.printStackTrace();

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

            }

            zk.register(new WatcherImpl());

            try {

                zk.getData("/zk-demo/watch-this"truenull);

            } catch (KeeperException e) {

                e.printStackTrace();

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

    }

    public static void main(String[] args) throws IOException, KeeperException, InterruptedException {

        ZoomkeepTest2 zt = new ZoomkeepTest2();

    }

}

2 Run zkCli.cmd and set node date:

set /zk-demo/watch-this data3333\\dsafsa

set /zk-demo/watch-this data3333\\dsafsa12

3 The Console will output:

已經觸發了NodeDataChanged事件!

data3333\\dsafsa

已經觸發了NodeDataChanged事件!

data3333\\dsafsa12


pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>zookeeperTest</groupId>
  <artifactId>com.tommy.zookeeper</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  
  <dependencies>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.5</version>
</dependency>

       <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
        </dependency>
        
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.5</version>
        </dependency>
        
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
             <version>1.6.4</version>
        </dependency>
  
    </dependencies>
    
</project>


發佈了17 篇原創文章 · 獲贊 1 · 訪問量 9717
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章