Ejemplo n.º 1
0
 /**
  * @Title: registerListeners @TitleExplain: 向zk注册监听 @Description: 注册监听
  *
  * @param client
  * @author wudan-mac
  */
 private void registerListeners(CuratorFramework client) {
   /*
    * 注册监听者
    */
   client
       .getConnectionStateListenable()
       .addListener(
           new ConnectionStateListener() {
             @Override
             public void stateChanged(
                 CuratorFramework client, ConnectionState newState) { // 当状态发生变化时通知监听者
               logger.debug("CuratorFramework state changed: {}", newState);
               if (newState == ConnectionState.CONNECTED
                   || newState == ConnectionState.RECONNECTED) {
                 for (IZKListener listener : listeners) {
                   listener.executor(client);
                   logger.debug("Listener {} executed!", listener.getClass().getName());
                 }
               }
             }
           });
   /*
    *异常处理
    */
   client
       .getUnhandledErrorListenable()
       .addListener(
           new UnhandledErrorListener() {
             @Override
             public void unhandledError(String message, Throwable e) {
               logger.debug("CuratorFramework unhandledError: {}", message);
             }
           });
 }
Ejemplo n.º 2
0
  /**
   * connect ZK, register Watch/unhandle Watch
   *
   * @return
   */
  public CuratorFramework mkClient(
      Map conf, List<String> servers, Object port, String root, final WatcherCallBack watcher) {

    CuratorFramework fk = Utils.newCurator(conf, servers, port, root);

    fk.getCuratorListenable()
        .addListener(
            new CuratorListener() {
              @Override
              public void eventReceived(CuratorFramework _fk, CuratorEvent e) throws Exception {
                if (e.getType().equals(CuratorEventType.WATCHED)) {
                  WatchedEvent event = e.getWatchedEvent();

                  watcher.execute(event.getState(), event.getType(), event.getPath());
                }
              }
            });

    fk.getUnhandledErrorListenable()
        .addListener(
            new UnhandledErrorListener() {
              @Override
              public void unhandledError(String msg, Throwable error) {
                String errmsg = "Unrecoverable Zookeeper error, halting process: " + msg;
                LOG.error(errmsg, error);
                JStormUtils.halt_process(1, "Unrecoverable Zookeeper error");
              }
            });
    fk.start();
    return fk;
  }