本文整理汇总了Java中org.apache.helix.manager.zk.ZkClient.subscribeDataChanges方法的典型用法代码示例。如果您正苦于以下问题:Java ZkClient.subscribeDataChanges方法的具体用法?Java ZkClient.subscribeDataChanges怎么用?Java ZkClient.subscribeDataChanges使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.helix.manager.zk.ZkClient
的用法示例。
在下文中一共展示了ZkClient.subscribeDataChanges方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: start
import org.apache.helix.manager.zk.ZkClient; //导入方法依赖的package包/类
public void start(ControllerMetrics controllerMetrics) {
_controllerMetrics = controllerMetrics;
LOGGER.info("Starting realtime segments manager, adding a listener on the property store table configs path.");
String zkUrl = _pinotHelixResourceManager.getHelixZkURL();
_zkClient = new ZkClient(zkUrl, ZkClient.DEFAULT_SESSION_TIMEOUT, ZkClient.DEFAULT_CONNECTION_TIMEOUT);
_zkClient.setZkSerializer(new ZNRecordSerializer());
_zkClient.waitUntilConnected();
// Subscribe to any data/child changes to property
_zkClient.subscribeChildChanges(_tableConfigPath, this);
_zkClient.subscribeDataChanges(_tableConfigPath, this);
// Subscribe to leadership changes
_pinotHelixResourceManager.getHelixZkManager().addControllerListener(new ControllerChangeListener() {
@Override
public void onControllerChange(NotificationContext changeContext) {
processPropertyStoreChange(CONTROLLER_LEADER_CHANGE);
}
});
// Setup change listeners for already existing tables, if any.
processPropertyStoreChange(_tableConfigPath);
}
示例2: testWatchRenew
import org.apache.helix.manager.zk.ZkClient; //导入方法依赖的package包/类
/**
* test zk watchers are renewed automatically after session expiry
* zookeeper-client side keeps all registered watchers see ZooKeeper.WatchRegistration.register()
* after session expiry, all watchers are renewed
* if a path that has watches on it has been removed during session expiry,
* the watchers on that path will still get callbacks after session renewal, especially:
* a data-watch will get data-deleted callback
* a child-watch will get a child-change callback with current-child-list = null
* this can be used for cleanup watchers on the zookeeper-client side
*/
@Test
public void testWatchRenew() throws Exception {
String className = TestHelper.getTestClassName();
String methodName = TestHelper.getTestMethodName();
String testName = className + "_" + methodName;
final ZkClient client =
new ZkClient(ZK_ADDR, ZkClient.DEFAULT_SESSION_TIMEOUT,
ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
// make sure "/testName/test" doesn't exist
final String path = "/" + testName + "/test";
client.delete(path);
ZkListener listener = new ZkListener();
client.subscribeDataChanges(path, listener);
client.subscribeChildChanges(path, listener);
ZkTestHelper.expireSession(client);
boolean succeed = listener._childChangeCountDown.await(10, TimeUnit.SECONDS);
Assert.assertTrue(succeed,
"fail to wait on child-change count-down in 10 seconds after session-expiry");
Assert.assertEquals(listener._parentPath, path,
"fail to get child-change callback after session-expiry");
Assert.assertNull(listener._currentChilds,
"fail to get child-change callback with currentChilds=null after session expiry");
succeed = listener._dataDeleteCountDown.await(10, TimeUnit.SECONDS);
Assert.assertTrue(succeed,
"fail to wait on data-delete count-down in 10 seconds after session-expiry");
Assert.assertEquals(listener._dataDeletePath, path,
"fail to get data-delete callback after session-expiry");
client.close();
}
示例3: testWatchRemove
import org.apache.helix.manager.zk.ZkClient; //导入方法依赖的package包/类
/**
* after calling zkclient#unsubscribeXXXListener()
* an already registered watch will not be removed from ZooKeeper#watchManager#XXXWatches
* immediately.
* the watch will get removed on the following conditions:
* 1) there is a set/delete on the listening path via the zkclient
* 2) session expiry on the zkclient (i.e. the watch will not be renewed after session expiry)
* @throws Exception
*/
@Test
public void testWatchRemove() throws Exception {
String className = TestHelper.getTestClassName();
String methodName = TestHelper.getTestMethodName();
String testName = className + "_" + methodName;
final ZkClient client =
new ZkClient(ZK_ADDR, ZkClient.DEFAULT_SESSION_TIMEOUT,
ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
// make sure "/testName/test" doesn't exist
final String path = "/" + testName + "/test";
client.createPersistent(path, true);
ZkListener listener = new ZkListener();
client.subscribeDataChanges(path, listener);
client.subscribeChildChanges(path, listener);
// listener should be in both ZkClient#_dataListener and ZkClient#_childListener set
Map<String, Set<IZkDataListener>> dataListenerMap = ZkTestHelper.getZkDataListener(client);
Assert.assertEquals(dataListenerMap.size(), 1, "ZkClient#_dataListener should have 1 listener");
Set<IZkDataListener> dataListenerSet = dataListenerMap.get(path);
Assert.assertNotNull(dataListenerSet, "ZkClient#_dataListener should have 1 listener on path: "
+ path);
Assert.assertEquals(dataListenerSet.size(), 1,
"ZkClient#_dataListener should have 1 listener on path: " + path);
Map<String, Set<IZkChildListener>> childListenerMap = ZkTestHelper.getZkChildListener(client);
Assert.assertEquals(childListenerMap.size(), 1,
"ZkClient#_childListener should have 1 listener");
Set<IZkChildListener> childListenerSet = childListenerMap.get(path);
Assert.assertNotNull(childListenerSet,
"ZkClient#_childListener should have 1 listener on path: " + path);
Assert.assertEquals(childListenerSet.size(), 1,
"ZkClient#_childListener should have 1 listener on path: " + path);
// watch should be in ZooKeeper#watchManager#XXXWatches
Map<String, List<String>> watchMap = ZkTestHelper.getZkWatch(client);
// System.out.println("watchMap1: " + watchMap);
List<String> dataWatch = watchMap.get("dataWatches");
Assert.assertNotNull(dataWatch,
"ZooKeeper#watchManager#dataWatches should have 1 data watch on path: " + path);
Assert.assertEquals(dataWatch.size(), 1,
"ZooKeeper#watchManager#dataWatches should have 1 data watch on path: " + path);
Assert.assertEquals(dataWatch.get(0), path,
"ZooKeeper#watchManager#dataWatches should have 1 data watch on path: " + path);
List<String> childWatch = watchMap.get("childWatches");
Assert.assertNotNull(childWatch,
"ZooKeeper#watchManager#childWatches should have 1 child watch on path: " + path);
Assert.assertEquals(childWatch.size(), 1,
"ZooKeeper#watchManager#childWatches should have 1 child watch on path: " + path);
Assert.assertEquals(childWatch.get(0), path,
"ZooKeeper#watchManager#childWatches should have 1 child watch on path: " + path);
client.unsubscribeDataChanges(path, listener);
client.unsubscribeChildChanges(path, listener);
// System.out.println("watchMap2: " + watchMap);
ZkTestHelper.expireSession(client);
// after session expiry, those watches should be removed
watchMap = ZkTestHelper.getZkWatch(client);
// System.out.println("watchMap3: " + watchMap);
dataWatch = watchMap.get("dataWatches");
Assert.assertTrue(dataWatch.isEmpty(), "ZooKeeper#watchManager#dataWatches should be empty");
childWatch = watchMap.get("childWatches");
Assert.assertTrue(childWatch.isEmpty(), "ZooKeeper#watchManager#childWatches should be empty");
client.close();
}