我正在开发一个非常简单的仪表板,用于为测试目的清除Gemfire区域。我这样做主要是为了让测试人员自己做这件事。
我想动态地获取当前可用的区域名称以清除。
我正在搜索spring-data-gemfire文档,但我无法找到获取所有区域名称的方法。
到目前为止,我得到的最好提示是<gfe:auto-region-lookup/>,但我想我仍然需要一个带有所有区域名称的cache.xml,而且我也不知道如何动态显示它们的名称,以及如何从这些区域删除所有数据。
谢谢
发布于 2015-08-26 16:22:39
<gfe:auto-region-lookup>旨在为在Spring上下文之外显式创建的所有GemFire区域(即cache.xml或使用GemFire的相对新的基于集群的配置服务)在Spring ApplicationContext中自动创建bean。但是,开发人员必须使用和/或启用这些机制来使用auto-region-lookup功能。
要获得GemFire“集群”中所有区域名称的列表,您需要类似于Gfsh的'list region'命令,该命令使用函数来收集GemFire (缓存)集群中定义的所有区域。
请注意,成员可以定义不同的区域,即参与集群的所有成员不必定义相同的区域。在大多数情况下,他们这样做,因为它是有益于复制和HA的目的。尽管如此,一些成员可能只定义该成员将使用的本地区域。
要从列表中清除区域,再次需要使用GemFire Function来“清除”集群中查询代理成员当前未定义的其他区域。
当然,如果您只想清除定义在成员本身上的区域,那么这个问题非常简单.
@Autowired
private Cache gemfireCache;
...
public void clearRegions() {
for (Region rootRegion : gemfireCache.rootRegions()) {
for (Region subRegion : rootRegion.subregions(true)) {
subRegion.clear();
}
rootRegion.clear());
}
}有关更多细节,请参见rootRegions()和分区域(递归:布尔)。
注意,GemFire的Cache接口实现了RegionService接口。
希望这能有所帮助。
干杯!
https://stackoverflow.com/questions/32227976
复制相似问题