4rrr 发表于 2015-12-24 11:31:24

[java,zookeeper]2.1 KeeperState.SyncConnected linker

1. Watcher1
自身实现 Watcher 接口,传入 this




[*]package org.apache.zookeeper.demo;

[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**

[*] * Created by root on 6/28/15.
[*] */
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*]    ZooKeeper zk = null ;
[*]
[*]    final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*]    final int SESSSION_TIMER = 2000 ;
[*]
[*]    private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*]    public SyncConnect_Event_Tester ()
[*]    {
[*]      try
[*]      {
[*]
[*]            zk = new ZooKeeper ( CONNECTION_STRING , SESSSION_TIMER , this);
[*]            this.connectedSemaphore.await () ;
[*]      }
[*]      catch ( Exception e )
[*]      {
[*]            e.printStackTrace();
[*]      }
[*]    }
[*]
[*]    public void process ( WatchedEvent we )
[*]    {
[*]      try
[*]      {
[*]            Event.KeeperState keeperState = we.getState() ;
[*]
[*]            System.out.println (we.getState().toString()) ;
[*]
[*]            if (keeperState == Event.KeeperState.SyncConnected )
[*]            {
[*]                System.out.println (" success connect to ZooKeeper Server ") ;
[*]
[*]                connectedSemaphore.countDown();
[*]            }
[*]      }
[*]      catch ( Exception ex )
[*]      {
[*]
[*]      }
[*]    }
[*]
[*]
[*]    public static void main ( String [] args )
[*]    {
[*]      SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*]    }
[*]}
[*]

2. Watcher2
另创建一个类实现 Watcher, 传入该类的实例对象




[*]package org.apache.zookeeper.demo;

[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**

[*] * Created by root on 6/28/15.
[*] */
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*]    ZooKeeper zk = null ;
[*]
[*]    final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*]    final int SESSSION_TIMER = 2000 ;
[*]
[*]    private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*]    public SyncConnect_Event_Tester ()
[*]    {
[*]      try
[*]      {
[*]
[*]            WatcherLoader w = new WatcherLoader( this.connectedSemaphore ) ;
[*]
[*]            zk = new ZooKeeper (CONNECTION_STRING , SESSSION_TIMER , w ) ; // this is for the Watcher 2
[*]            this.connectedSemaphore.await () ;
[*]
[*]      }
[*]      catch ( Exception e )
[*]      {
[*]            e.printStackTrace();
[*]      }
[*]    }
[*]
[*]    public static void main ( String [] args )
[*]    {
[*]      SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*]    }
[*]}
[*]
[*]class WatcherLoader implements Watcher
[*]{
[*]    private CountDownLatch countDownLatch ;
[*]
[*]    public WatcherLoader ( CountDownLatch countDownLatch )
[*]    {
[*]      this.countDownLatch = countDownLatch ;
[*]    }
[*]
[*]    public void process ( WatchedEvent e) {
[*]      try
[*]      {
[*]            Event.KeeperState keeperState = e.getState() ;
[*]
[*]            if (keeperState == Event.KeeperState.SyncConnected )
[*]            {
[*]                System.out.println (" success connect to ZooKeeper Server ") ;
[*]                countDownLatch.countDown();
[*]
[*]
[*]            }
[*]      }
[*]      catch ( Exception ex )
[*]      {
[*]            // ignore
[*]      }
[*]    }
[*]}

3. Watcher3

直接在 ZooKeeper 构造方法的 Watcher 参数中创建一个 Watcher 接口实例,并在 Watcher 内部编写 process 方法。



[*]package org.apache.zookeeper.demo;

[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**

[*] * Created by root on 6/28/15.
[*] */
[*]
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*]    ZooKeeper zk = null ;
[*]
[*]    final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*]    final int SESSSION_TIMER = 2000 ;
[*]
[*]    private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*]    public SyncConnect_Event_Tester ()
[*]    {
[*]      try
[*]      {
[*]            // this is for the Watcher 3
[*]            zk = new ZooKeeper ( CONNECTION_STRING , SESSSION_TIMER , new Watcher ()
[*]            {
[*]                public void process ( WatchedEvent e )
[*]                {
[*]                  try
[*]                  {
[*]                        Event.KeeperState keeperState = e.getState() ;
[*]
[*]                        if (keeperState == Event.KeeperState.SyncConnected )
[*]                        {
[*]                            System.out.println (" success connect to ZooKeeper Server ") ;
[*]                            connectedSemaphore.countDown();
[*]                        }
[*]                  }
[*]                  catch ( Exception ex )
[*]                  {
[*]                        // ignored
[*]                  }
[*]                }
[*]            }) ;
[*]            this.connectedSemaphore.await () ;
[*]
[*]      }
[*]      catch ( Exception e )
[*]      {
[*]            e.printStackTrace();
[*]      }
[*]    }
[*]
[*]
[*]    public static void main ( String [] args )
[*]    {
[*]      SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*]    }
[*]}
[*]

4. Watcher4
类似于第三种方法,创建 Watcher 实例,需要的时候将该实例传入到参数中.




[*]package org.apache.zookeeper.demo;

[*]
[*]import java.util.concurrent.CountDownLatch ;
[*]
[*]
[*]import org.apache.zookeeper.WatchedEvent;
[*]import org.apache.zookeeper.Watcher;
[*]import org.apache.zookeeper.Watcher.Event.* ;
[*]import org.apache.zookeeper.ZooKeeper ;
[*]
[*]/**

[*] * Created by root on 6/28/15.
[*] */
[*]public class SyncConnect_Event_Tester implements Watcher // Watcher 1
[*]{
[*]    ZooKeeper zk = null ;
[*]
[*]    final String CONNECTION_STRING = "127.0.0.1:2181" ;
[*]
[*]    final int SESSSION_TIMER = 2000 ;
[*]
[*]    Watcher watcher ;
[*]
[*]    private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ) ;
[*]
[*]    public SyncConnect_Event_Tester ()
[*]    {
[*]      try
[*]      {
[*]            // this is for the Watcher 4
[*]            this.watcher = new Watcher () {
[*]                public void process(WatchedEvent e) {
[*]                  try
[*]                  {
[*]                        Event.KeeperState keeperState = e.getState() ;
[*]
[*]                        if (keeperState == Event.KeeperState.SyncConnected )
[*]                        {
[*]                            System.out.println (" success connect to ZooKeeper Server ") ;
[*]                            connectedSemaphore.countDown();
[*]                        }
[*]                  }
[*]                  catch ( Exception ex )
[*]                  {
[*]                        // ignored
[*]                  }
[*]                }
[*]            } ;
[*]
[*]
[*]            zk = new ZooKeeper (CONNECTION_STRING, SESSSION_TIMER , this.watcher) ;
[*]
[*]            this.connectedSemaphore.await () ;
[*]
[*]
[*]      }
[*]      catch ( Exception e )
[*]      {
[*]            e.printStackTrace();
[*]      }
[*]    }
[*]
[*]    public static void main ( String [] args )
[*]    {
[*]      SyncConnect_Event_Tester tester = new SyncConnect_Event_Tester() ;
[*]    }
[*]}
[*]

end
页: [1]
查看完整版本: [java,zookeeper]2.1 KeeperState.SyncConnected linker