@Override public void close() throws InterruptedException { // NOTE: the curator instance is NOT closed here CuratorListener localListener = listener.getAndSet(null); if ( localListener != null ) { curator.getCuratorListenable().removeListener(localListener); } }
curator.getCuratorListenable().addListener(localListener); listener.set(localListener);
/** * connect ZK, register watchers */ 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; }
private void awaitAnnounce( final Announcer announcer, final String path, final byte[] bytes, boolean removeParentsIfCreated ) throws InterruptedException { final CountDownLatch latch = new CountDownLatch(1); curator.getCuratorListenable().addListener( new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) { if (event.getType() == CuratorEventType.CREATE && event.getPath().equals(path)) { latch.countDown(); } } } ); announcer.announce(path, bytes, removeParentsIfCreated); latch.await(); } }
curator.getCuratorListenable().addListener( new CuratorListener() { @Override
curator.getCuratorListenable().addListener( new CuratorListener()
curator.getCuratorListenable().addListener( new CuratorListener()
@Override public Listenable<CuratorListener> getCuratorListenable() { return new ListenableDecorator<>(inner.getCuratorListenable(), executor); }
/** * @param zks * zookeeper address * @param group * group for the lock * @param heartbeat * zookeeper heartbeat interval * @param interval * interval for lock competition */ public ZookeeperCompetitiveImpl(String zks, String group, int heartbeat, int interval) { super(); this.group = group; this.interval = interval; client = CuratorFrameworkFactory.newClient(zks, heartbeat, heartbeat, new ExponentialBackoffRetry(1000, 3)); connectionListener = new ConnectionListener(); client.getCuratorListenable().addListener(connectionListener); client.start(); final String lockPath = ZKPaths.makePath(ZK_ROOT, group); try { if (client.checkExists().forPath(lockPath) == null) { LOGGER.info("Lock path {} not exists, create it.", lockPath); client.create().creatingParentsIfNeeded().forPath(lockPath); } } catch (Exception e) { LOGGER.error(e.getMessage(), e); throw Throwables.propagate(e); } }
public static void setDataAsync(CuratorFramework client, String path, byte[] payload) throws Exception { // this is one method of getting event/async notifications CuratorListener listener = new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception { // examine event for details } }; client.getCuratorListenable().addListener(listener); // set data for the given node asynchronously. The completion // notification // is done via the CuratorListener. client.setData().inBackground().forPath(path, payload); }
public static void setDataAsync(CuratorFramework client, String path, byte[] payload) throws Exception { // this is one method of getting event/async notifications CuratorListener listener = new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception { // examine event for details } }; client.getCuratorListenable().addListener(listener); // set data for the given node asynchronously. The completion notification // is done via the CuratorListener. client.setData().inBackground().forPath(path, payload); }
public void runForMaster() { /* * Register listeners */ client.getCuratorListenable().addListener(masterListener); client.getUnhandledErrorListenable().addListener(errorsListener); /* * Starting master */ LOG.info( "Starting master selection: " + myId); leaderSelector.setId(myId); leaderSelector.start(); }
try { client = CuratorFrameworkFactory.newClient(server.getConnectString(), new ExponentialBackoffRetry(1000, 3)); client.getCuratorListenable().addListener(new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
public void runForMaster() throws Exception { /* * Register listeners */ client.getCuratorListenable().addListener(masterListener); client.getUnhandledErrorListenable().addListener(errorsListener); /* * Start master election */ LOG.info( "Starting master selection: " + myId); leaderLatch.addListener(this); leaderLatch.start(); }
/** * * @描述:第二种监听器的添加方式: * 也是一次性的监听操作,使用后就无法在继续监听了 * @return void * @exception * @createTime:2016年5月18日 * @author: songqinghu * @throws Exception */ private static void setListenterTwo(CuratorFramework client) throws Exception{ ExecutorService pool = Executors.newCachedThreadPool(); CuratorListener listener = new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception { System.out.println("监听器 : "+ event.toString()); } }; client.getCuratorListenable().addListener(listener,pool); client.getData().inBackground().forPath("/two"); client.getData().inBackground().forPath("/two"); client.getData().inBackground().forPath("/two"); client.getData().inBackground().forPath("/two"); Thread.sleep(Long.MAX_VALUE ); } /**
try { client = CuratorFrameworkFactory.newClient(server.getConnectString(), new ExponentialBackoffRetry(1000, 3)); client.getCuratorListenable().addListener(new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
public boolean newZkClient() throws InterruptedException { CuratorFramework client = CuratorFrameworkFactory.builder() .ensembleProvider(new DefaultEnsembleProvider(address)) .sessionTimeoutMs(30 * 1000) .connectionTimeoutMs(15 * 1000) .retryPolicy(new ExponentialBackoffRetry(1000, Integer.MAX_VALUE)) .build(); client.getConnectionStateListenable().addListener(new ConnectionStateListener() { @Override public void stateChanged(CuratorFramework client, ConnectionState newState) { LOGGER.info("zookeeper state changed to " + newState); if (newState == ConnectionState.RECONNECTED) { // RegistryEventListener.connectionReconnected(); } } }); //事件监听; client.getCuratorListenable().addListener(new CuratorEventListener(this), curatorEventListenerThreadPool); client.start(); boolean isConnected = client.getZookeeperClient().blockUntilConnectedOrTimedOut(); CuratorFramework oldClient = this.zookeeperClient; this.zookeeperClient = client; close(oldClient); LOGGER.info("succeed to create zookeeper curator, connected:" + isConnected); return isConnected; }
try { client = CuratorFrameworkFactory.newClient(server.getConnectString(), new ExponentialBackoffRetry(1000, 3)); client.getCuratorListenable().addListener(new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
try { client = CuratorFrameworkFactory.newClient(server.getConnectString(), new ExponentialBackoffRetry(1000, 3)); client.getCuratorListenable().addListener(new CuratorListener() { @Override public void eventReceived(CuratorFramework client, CuratorEvent event) throws Exception {
private static CuratorFramework withMonitoring(CuratorFramework curator) { curator.getConnectionStateListenable().addListener((c,s) -> { EVENT_LOGGER.info("[CURATOR: {}] connection state now {}", c.getState(), s); if (s == ConnectionState.CONNECTED) { try { ZooKeeper zk = c.getZookeeperClient().getZooKeeper(); zk.register((WatchedEvent event) -> { EVENT_LOGGER.info("[ZOOKEEPER] event " + "type={}, state={}, path={}", event.getType(), event.getState(), event.getPath()); }); } catch (Exception e) { EVENT_LOGGER.error("Failed to register ZK logging", e); } } }); curator.getCuratorListenable().addListener((c,e) -> EVENT_LOGGER.info("[CURATOR: {}] event: type={}, name={}, " + "path={}, rc={}, children={}", c.getState(), e.getType(), e.getName(), e.getPath(), e.getResultCode(), e.getChildren())); curator.getUnhandledErrorListenable().addListener((m,e) -> EVENT_LOGGER.warn("[CURATOR: {}] unhandled error \"{}\": {}", curator.getState(), m, e.getMessage())); return curator; }