public static ZkClient buildZkClient(ApplicationConfig applicationConfig) { String zookeeperCluster = applicationConfig.getZookeeperCluster(); ZkClient zkClient; if (zookeeperCluster.isEmpty()) { zkClient = new NullZkClient(); } else { if (zookeeperCluster.startsWith("exhibitor:")) { String[] values = zookeeperCluster.replace("exhibitor:", "").split(":"); int restPort = Integer.parseInt(values[0]); Collection<String> serverSet = Arrays.asList(values[1].split(",")); zkClient = ZkClient.fromExhibitor(serverSet, restPort); } else { zkClient = new ZkClient(zookeeperCluster); } } return zkClient; }
public void registerForTreeNodeEvents(String path, Consumer<TreeCacheEvent> updater) { TreeCache cache = getOrCreateTreeCache(path); if (client.getState().equals(CuratorFrameworkState.STARTED)) { startTreeCache(cache); } cache .getListenable() .addListener( new TreeCacheListener() { @Override public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception { updater.accept(event); } }); }
public void register(String path, InetSocketAddress address) { register(path, address, null); }
ZkClient zkClient = new ZkClient(server.getConnectString()); AtomicReference<String> result = new AtomicReference<>(); CountDownLatch signal = new CountDownLatch(1); zkClient.registerUpdater( new ConfigurationUpdater() { @Override zkClient.start(); zkClient.stop();
.forPath(treeNodePath + "/one", payload1.getBytes()); ZkClient zkClient = new ZkClient(server.getConnectString()); zkClient.start(); zkClient.registerForTreeNodeEvents( treeNodePath, treeCacheEvent -> { assertEquals(payload1, zkClient.get(treeNodePath + "/one")); assertEquals(payload2, zkClient.get(treeNodePath + "/two"));
public Application build() { Map<String, XioServer> servers = new HashMap<>(); serverBootstraps.forEach((k, v) -> servers.put(k, v.build())); ZkClient zkClient = state.getZkClient(); zkClient.registerUpdater( new IpFilterConfig.Updater(config.getIpFilterPath(), state::setIpFilterConfig)); zkClient.registerUpdater( new Http1FilterConfig.Updater(config.getHttp1FilterPath(), state::setHttp1FilterConfig)); state.getZkClient().start(); Configurator configurator = Configurator.build(config.settings()); configurator.start(); Application application = new Application(config, servers, state, configurator); new ApplicationRunner(application).start(); return application; } }
@Test public void testFromExhibitor() throws Exception { MockWebServer server = new MockWebServer(); server.enqueue( new MockResponse() .setBody( "count=5&server0=10.10.1.1&server1=10.10.1.2&server2=10.10.1.3&server3=10.10.1.4&server4=10.10.1.5&port=2181") .setHeader("Content-Type", "application/x-www-form-urlencoded")); server.start(); ZkClient client = ZkClient.fromExhibitor(Arrays.asList("127.0.0.1"), server.getPort()); assertEquals( "10.10.1.1:2181,10.10.1.2:2181,10.10.1.3:2181,10.10.1.4:2181,10.10.1.5:2181", client.getConnectionString()); server.shutdown(); }
public void registerUpdater(ConfigurationUpdater updater) { NodeCache cache = getOrCreateNodeCache(updater.getPath()); if (client.getState().equals(CuratorFrameworkState.STARTED)) { startNodeCache(cache); } cache .getListenable() .addListener( new NodeCacheListener() { @Override public void nodeChanged() { updater.update(cache.getCurrentData().getData()); } }); }
public static ZkClient fromExhibitor(Collection<String> serverSet, int restPort) { try { Exhibitors exhibitors = new Exhibitors(serverSet, restPort, () -> ""); RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); ExhibitorEnsembleProvider ensemble = new ExhibitorEnsembleProvider( exhibitors, new DefaultExhibitorRestClient(), "/exhibitor/v1/cluster/list", 61000, retryPolicy); ensemble.pollForInitialEnsemble(); CuratorFramework curatorClient = CuratorFrameworkFactory.builder() .ensembleProvider(ensemble) .retryPolicy(retryPolicy) .build(); return new ZkClient(curatorClient); } catch (Exception e) { throw new RuntimeException(e); } }
public static void main(String args[]) throws Exception { Application application = new ApplicationBootstrap("exhibitor-test") .addServer("main", bs -> bs.addToPipeline(new SmartHttpPipeline())) .build(); application .getState() .getZkClient() .getClient() .create() .creatingParentsIfNeeded() .forPath("/test/key", "value".getBytes()); } }
String path = "/xio/watched/node-init"; ZkClient zkClient = new ZkClient(server.getConnectString()); AtomicReference<String> result = new AtomicReference<>(); CountDownLatch signal = new CountDownLatch(1); zkClient.start(); zkClient.registerUpdater( new ConfigurationUpdater() { @Override assertEquals(payload, result.get()); zkClient.stop();
ZkClient zkClient = new ZkClient(server.getConnectString()); AtomicReference<String> result = new AtomicReference<>(); CountDownLatch firstSignal = new CountDownLatch(1); CountDownLatch secondSignal = new CountDownLatch(2); zkClient.registerUpdater( new ConfigurationUpdater() { @Override zkClient.start(); assertEquals(update, result.get()); zkClient.stop();
public void register(String NODE_LIST_PATH, String ip, int port, @Nullable byte[] data) { register(NODE_LIST_PATH, new InetSocketAddress(ip, port), data); }