我正在开发一个非常简单的仪表板来清除Gemfire区域以进行测试。我主要是为了让测试人员自己做这个工具。
我想动态获取当前可用的区域名称以进行清除。
我正在搜索spring-data-gemfire文档,但我找不到获取所有地区名称的方法。
我到目前为止最好的提示是<gfe:auto-region-lookup/>
,但我想我仍然需要一个包含所有地区名称的cache.xml,而且我不知道如何动态显示他们的名字以及如何删除来自这些地区的所有数据。
由于
答案 0 :(得分:1)
<gfe:auto-region-lookup>
用于在Spring ApplicationContext
中为所有已在Spring上下文之外显式创建的GemFire区域(即cache.xml或使用GemFire相对较新的{{3}自动创建bean }})。但是,开发人员必须使用和/或启用这些机制来使用auto-region-lookup
功能。
要获取GemFire“群集”中所有地区名称的列表,您需要与 Gfsh的 'list region'
命令等效的命令,该命令使用Cluster-based Configuration Service来收集所有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());
}
}
有关详细信息,请参阅Function和rootRegions()。
注意,GemFire的Cache
接口实现了RegionService
接口。
希望这有帮助。
干杯!