<gfe:auto-region-lookup>
旨在为所有的GemFire地区春季ApplicationContext
已Spring上下文之外被明确创建(即cache.xml或使用的GemFire的相对较新的Cluster-based Configuration Service)自动创建豆类。但是,开发人员必须使用和/或启用这些机制才能使用auto-region-lookup
功能。
要得到的GemFire“集群”在所有地区的名单,你需要的东西相当于Gfsh的'list region'
命令,它采用Function收集起来的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()和subregions(recursive:boolean)。
注意,GemFire的Cache
接口实现RegionService
接口。
希望这会有所帮助。
干杯!
请注意,您无法在PartitionedRegions上调用clear(),您将得到一个UnsupportedOperationException异常。对于那些,典型的方法是使用onMember函数调用,它遍历并单独删除每个条目。 –
这是正确的。但是,您可以在PARTITION区域上调用“removeAll()”。这正是SDG SimpleGemfireRepository impl所做的(https://github.com/spring-projects/spring-data-gemfire/blob/master/src/main/java/org/springframework/data/gemfire/repository/support/ SimpleGemfireRepository.java#L264-L266),特别是(https://github.com/spring-projects/spring-data-gemfire/blob/master/src/main/java/org/springframework/data/gemfire/repository/support /SimpleGemfireRepository.java#L249-L251)。所以,这里不要求函数。 –
其实,只是在想分区。removeAll(partitionRegion.keySet())最可能是成员本地的,在这种情况下,您需要一个以托管该(PARTITION)区域的所有成员为目标的函数。但是,使用keySet的removeAll(..)将为您处理“迭代”部分,;-) –