4.3.8.6. Grouping API を使用する方法
まず、グループを有効にする必要があります。プログラムを用いて Data Grid を設定している場合は、以下を呼び出します。
Configuration c = new ConfigurationBuilder() .clustering().hash().groups().enabled() .build();
Configuration c = new ConfigurationBuilder()
.clustering().hash().groups().enabled()
.build();
または、XML を使用している場合は、以下を行います。
<distributed-cache> <groups enabled="true"/> </distributed-cache>
<distributed-cache>
<groups enabled="true"/>
</distributed-cache>
キークラスを制御できる場合 (クラス定義を変更できるが、変更不可能なライブラリーの一部ではない)、組み込みグループを使用することをお勧めします。intrinsic グループは、@Group
アノテーションをメソッドに追加して指定します。以下に例を示します。
group メソッドは String
を返す必要があります。
キークラスを制御できない場合、またはグループの決定がキークラスと直交する懸念事項である場合は、外部グループを使用することをお勧めします。外部グループは、Grouper
インターフェイスを実装することによって指定されます。
public interface Grouper<T> { String computeGroup(T key, String group); Class<T> getKeyType(); }
public interface Grouper<T> {
String computeGroup(T key, String group);
Class<T> getKeyType();
}
同じキータイプに対して複数の Grouper
クラスが設定されている場合は、それらすべてが呼び出され、前のクラスで計算された値を受け取ります。キークラスにも @Group
アノテーションがある場合、最初の Grouper
はアノテーション付きのメソッドによって計算されたグループを受信します。これにより、組み込みグループを使用するときに、グループをさらに細かく制御できます。Grouper
実装の例を見てみましょう。
Grouper
実装は、キャッシュ設定で明示的に登録する必要があります。プログラムを用いて Data Grid を設定している場合は、以下を行います。
Configuration c = new ConfigurationBuilder() .clustering().hash().groups().enabled().addGrouper(new KXGrouper()) .build();
Configuration c = new ConfigurationBuilder()
.clustering().hash().groups().enabled().addGrouper(new KXGrouper())
.build();
または、XML を使用している場合は、以下を行います。
<distributed-cache> <groups enabled="true"> <grouper class="com.acme.KXGrouper" /> </groups> </distributed-cache>
<distributed-cache>
<groups enabled="true">
<grouper class="com.acme.KXGrouper" />
</groups>
</distributed-cache>