<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(..)將爲您處理「迭代」部分,;-) –