0

テスト目的で Gemfire 領域をクリアするための非常に単純なダッシュボードを開発しています。私は主に、テスターに​​自分でこれを行うためのツールを提供するためにこれを行っています。

現在利用可能なリージョン名を動的に取得してクリアしたいと考えています。

spring-data-gemfire のドキュメントを検索していますが、すべてのリージョン名を取得する方法が見つかりませんでした。

これまでのところ最高のヒントは<gfe:auto-region-lookup/>ですが、すべての地域名を含む cache.xml が必要であり、それらの名前を動的に表示する方法と、それらの地域からすべてのデータを削除する方法もわかりません。

ありがとう

4

1 に答える 1

1

<gfe:auto-region-lookup>ApplicationContextSpring コンテキスト外で明示的に作成されたすべての GemFire リージョン (つまり、cache.xmlまたは GemFire の比較的新しいCluster-based Configuration Serviceを使用) に対して、Spring で Bean を自動的に作成することを意図しています。ただし、開発者は、これらのメカニズムを使用および/または有効にして、auto-region-lookup機能を採用する必要があります。

GemFire「クラスター」内のすべてのリージョン名のリストを取得するには、関数を使用して GemFire (キャッシュ) クラスターで定義されたすべてのリージョンを収集する Gfsh のコマンドに相当するもの必要です 'list region'

メンバーは異なるリージョンを定義できることに注意してください。つまり、クラスターに参加しているすべてのメンバーが必ずしも同じリージョンを定義する必要はありません。ほとんどの場合、レプリケーションと 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ます。

お役に立てれば。

乾杯!

于 2015-08-26T16:22:39.703 に答える