飼育係は、2を学びます

1.zookeeper的時計

1)、モニタとして理解することができるZooKeeperの中の全ての読み出し動作を-  のgetData() GetChildrenメソッド()及び(EXISTS)  - 選択されたモニターに設定することができます

レンジ2)時計

イベントを作成し、イベントを削除し、イベントを変更すると、子イベント

3)時計を削除します。

私たちは、removeWatchesを呼び出してのznodeの時計に登録削除することができます

2.watchesサンプル(javaの)

パブリッククラスZKDemoがウォッチャーを実装{
  プライベート静的たCountDownLatchたCountDownLatch =新しいたCountDownLatch(1)。
  プライベート静的ZooKeeperの飼育係。
  公共の静的な無効メイン(文字列[]引数)例外{スロー
    connetionZK(「」)を、
    閉じる();
  }

  パブリック静的ボイドconnetionZK(文字列ZK)にIOException、KeeperException、InterruptedExceptionある{スロー
    //飼育係的IP:端口
    = "192.168.10.150:2181"文字列パスを、
    飼育係=新規のZooKeeper(パス、×1000 20、新しいZKDemo())。
    //创建节点并给值
    // createZnode(飼育係、 "/試験"、 "TEST1" .getBytes())。
    //子节点列表更改
    // createZnodeChild(飼育係、 "/試験"、 "TEST2" .getBytes())。

    CreateZnodeAndChanged //(ZooKeeperの、 "/テスト"、 "Test3は" .getBytes());
    //作成および削除ノード
    // createZnodeAndDelete(ZooKeeperの、 "/テスト"、 "TEST4" .getBytes());
    //データノード削除ウォッチ下
    // createZnodeAndRMDataWatch(ZooKeeperの、 "/テスト"、 "TEST5" .getBytes());
    //時計を削除する次の子ノードは
    // createZnodeAndRMChildWatch(飼育係、 "/テスト "、 "TEST6" .getBytes());
    countDownLatch.await(); //プログラムはブロッキング続ける
  }

  / **
  *ノード値と作成
  *の@paramのZooKeeperのを
  * @paramパス
  * @paramデータ
  * /
  パブリック静的ボイドcreateZnode(ZooKeeperのZooKeeperの、文字列パス、バイト[]データ){
    //パスノード、ノード値、ウォッチ、タイプの作成
    を試して{
      zooKeeper.exists(パス、真の); ZooKeeperの新しい新しい際//デフォルトウォッチャー、ここではデフォルトの設定を参照(パスは、* 20 1000、新新ZKDemo())ウォッチャー
      zooKeeper.create(パス、データ、ZooDefs.Ids。 OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
    }キャッチ(KeeperException E){
      e.printStackTrace();
    }キャッチ(InterruptedExceptionあるE){
      e.printStackTrace();
    }
  }

  / **
  *子のリストは変更ノード
  * @paramのZooKeeperの
  *パス@param
  * @paramデータ
  * /
  パブリック静的な無効createZnodeChild(ZooKeeperのZooKeeperの、文字列のパス、バイト[]データ){
    //パスノード、ノード値、ウォッチ、タイプの作成
    を試して{
      zooKeeper.exists(パス、真の); ZooKeeperの新しい新しい際//デフォルトウォッチャー、ここではデフォルトの設定を参照(パスは、* 20 1000、新新ZKDemo())ウォッチャー
    zooKeeper.create(パス、データ、ZooDefs.Ids。 OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
    zooKeeper.getChildren(パス、真の);
    zooKeeper.create(パス+ "/ child1の"、 "子" .getBytes()、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
    }キャッチ(KeeperException E){
      e.printStackTrace();
    }キャッチ(InterruptedExceptionあるE){
      e.printStackTrace();
    }
  }

  / **
  *データ・ノードを修正
  * @paramのZooKeeperの
  * @paramパス
  * @paramデータ
  * /
  静的ボイドは公共createZnodeAndChanged(ZooKeeperのZooKeeperの、文字列のパスを、バイト[]データ){
    //パスノード、ノード値、ウォッチ、の種類を作成
    試し{
      (真へのパス、)zooKeeper.existsを; //デフォルトのウォッチャー、どこデフォルトそれは新しいのZooKeeperを参照(パス、* 1000年20 、新しいZKDemo())ウォッチャセットするとき
      zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
      (真へのパス、)zooKeeper.exists;
      のZooKeeper .setData(パス、 "変更" .getBytes()、-1);
    }キャッチ(KeeperException E){
      e.printStackTrace();
    }キャッチ(InterruptedExceptionあるE){
      e.printStackTrace();
    }
  }

  / **
  *作成ノードを削除する
  * @paramのZooKeeperの
  * @paramパス
  @paramデータ*
  * /
  パブリック静的な無効createZnodeAndDelete(ZooKeeperのZooKeeperの、文字列のパス、バイト[]データは){
    //パスノード、ノード値、ウォッチ、のタイプの作成
    試し{
      //デフォルトを使用; zooKeeper.exists(真のパスを、)ウォッチャーは、ここではデフォルトの設定を参照したときに、ウォッチャーのZooKeeper新新(パス、* 20が1000で、新しい新ZKDemo())
      zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
      zooKeeper.exists(真のパス);
      zooKeeper.delete(パス、-1);
    }キャッチ(KeeperException E){
      e.printStackTrace();
    }キャッチ(InterruptedExceptionあるE){
      e.printStackTrace();
    }
  }

  / **
  *データノードの下ウォッチ削除
  * @paramのZooKeeperを
  @param路*
  * @paramデータ
  * /
  パブリック静的ボイドcreateZnodeAndRMDataWatch(ZooKeeperのZooKeeperの、文字列パス、バイト[]データ){
    //パスのノード、ノード値、時計の種類作成する
    試み{
      zooKeeper.exists(真のパスを、); //デフォルトのウォッチャー、ここときウォッチャーのZooKeeper新新(パス、* 20 1000、新新ZKDemo())デフォルト設定を指し
      ; // zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT)
      zooKeeper.setData(パス、 "ウォッチ1" .getBytes()、-1);
      zKDemo zkDemo新しい新しいzKDemo =();
      バイト[]バイト= zooKeeper.getData(パス、zkDemo、新しい新しいスタット());
      のSystem.out.println (新しい新しい文字列(バイト));
      zooKeeper.removeWatches(パス、真のzkDemo、WatcherType.Data);
    }キャッチ(KeeperException E){
      e.printStackTrace();
    }キャッチ(InterruptedExceptionある電子){
      e.printStackTrace();
    }
  }

  / **
  *子节点下删除時計
  * @paramの飼育係
  * @paramパス
  * @paramデータ
  * /
  パブリック静的ボイドcreateZnodeAndRMChildWatch(ZooKeeperの飼育係、文字列パス、バイト[]データ){
    //创建节点路径、节点值、ウォッチは、类型
    {しようと
      ZKDemo zkDemo =新しいZKDemoを();
      zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
      zooKeeper.create(パス+ "/ child2の"、 "child2の" .getBytes()、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT)。 //
      zooKeeper.setData(パス、データ、-1)。
      zooKeeper.getChildren(パス、zkDemo)。
      zooKeeper.removeWatches(パス、zkDemo、WatcherType.Children、TRUE)。
    }キャッチ(KeeperException電子){
      e.printStackTrace();
    }キャッチ(InterruptedExceptionある電子){
      e.printStackTrace();
    }
  }

  / **
  *关闭ZK
  * /
  パブリック静的ボイド近い(){
    {しようと
      {(飼育係= nullで!)場合
        zooKeeper.close();
      }
    }キャッチ(InterruptedExceptionある電子){
      e.printStackTrace();
    }
  }

  プロセスボイドパブリック(WatchedEventイベント){
    countDownLatch.countDown();
    IF(Event.KeeperState.SyncConnected event.getState ==()){//接続状態
      のSystem.out.println( "接続状態");
    }そうIF( Event.KeeperState.Disconnected == event.getState()){// OFF状態
      のSystem.out.println( "OFFのZooKeeper");
    }そうIF(Event.KeeperState.AuthFailed event.getState ==()){ //認証失敗
      するSystem.out.println( "認証失敗");
    }そうIF(Event.KeeperState.ConnectedReadOnly event.getState ==()){//読み取り専用接続
      するSystem.out.println(「接続読み取り専用");
    }そうでない場合には(Event.KeeperState.SaslAuthenticated event.getState ==は()){//利用権のSASL ZooKeeperの動作実行
      のSystem.out.printlnを(" ZooKeeperの操作)が」SASL認証権限を行います。
    }そうであれば(Event.KeeperState.Expired == event.getState()){//服务器失效
      するSystem.out.println( "服务器失效")。
    }そうであれば(Event.KeeperState.Closed == event.getState()){//客户端关闭
      のSystem.out.println( "客户端关闭")。
    } {他
      のSystem.out.println( "未知")。
    }
    のSystem.out.println( "**************************************")。
    IF(Event.EventType.None == event.getType()){
      System.out.printlnは(event.getType())。
    }もしそうでなければ(Event.EventType.NodeCreated == event.getType()){
      System.out.printlnは(event.getType())。
    }もしそうでなければ(Event.EventType.NodeDeleted == event.getType()){
      System.out.printlnは(event.getType())。
    }もしそうでなければ(Event.EventType.NodeDataChanged == event.getType()){
      System.out.printlnは(event.getType())。
    }もしそうでなければ(Event.EventType.NodeChildrenChanged == event.getType()){
      System.out.printlnは(event.getType())。
    }もしそうでなければ(Event.EventType.DataWatchRemoved == event.getType()){
      System.out.printlnは(event.getType())。
    }もしそうでなければ(Event.EventType.ChildWatchRemoved == event.getType()){
      System.out.printlnは(event.getType())。
    } {他
      のSystem.out.println( "未知")。
    }
      のSystem.out.println( "######################################")。
    }
  }

おすすめ

転載: www.cnblogs.com/ku-ku-ku/p/10980726.html