4.3. グループ化 API の設定
JBoss Data Grid でグループ化 API を使用するには、最初にグループを有効にします。
プログラミングによる設定
プログラミング可能な API を使用して JBoss Data Grid を設定するには、以下を呼び出します。
Configuration c = new ConfigurationBuilder().clustering().hash().groups().enabled().build();
XML 設定
XML を使用して JBoss Data Grid を設定するには、以下を使用します。
<clustering> <hash> <groups enabled="true" /> </hash> </clustering>
キーのクラス定義が変更可能であり、グループの決定がキークラスに対して直交した関心事でない場合は、組み込みグループを使用します。メソッド内で
@Group
アノテーションを使用して組み込みグループを指定する場合は、以下のようになります。
class User { ... String office; ... int hashCode() { // Defines the hash for the key, normally used to determine location ... } // Override the location by specifying a group, all keys in the same // group end up with the same owner @Group String getOffice() { return office; } }
注記
グループは
String
である必要があります。
キークラスコントロールがない場合や、グループの決定がキークラスに対して直交した関心事である場合は、外部グループを使用します。外部グループは、
Grouper
インターフェースを実装して指定します。Grouper
インターフェース内の computeGroup
メソッドはグループを返します。
Grouper
はインターセプターとして動作し、以前に計算された値を computeGroup()
メソッドに渡します。定義された場合、@Group
は、最初の Grouper
に渡されるグループを決定し、組み込みグループを使用したときに改善されたグループコントロールを提供します。
grouper
を使用してキーのグループを決定するには、ターゲットキーからその keyType
を割り当てることができる必要があります。
以下は
Grouper
の例です。
public class KXGrouper implements Grouper<String> { // A pattern that can extract from a "kX" (e.g. k1, k2) style key // The pattern requires a String key, of length 2, where the first character is // "k" and the second character is a digit. We take that digit, and perform // modular arithmetic on it to assign it to group "1" or group "2". private static Pattern kPattern = Pattern.compile("(^k)(<a>\\d</a>)$"); public String computeGroup(String key, String group) { Matcher matcher = kPattern.matcher(key); if (matcher.matches()) { String g = Integer.parseInt(matcher.group(2)) % 2 + ""; return g; } else return null; } public Class<String> getKeyType() { return String.class; } }
この例では、単純な
grouper
がクラスキーを使用して、パターンでキーからグループを抽出します。キークラスで指定された情報は無視されます。各 grouper
は登録して使用する必要があります。
プログラミングによる設定
プログラミングにより JBoss Data Grid を設定する場合:
Configuration c = new ConfigurationBuilder().clustering().hash().groups().addGrouper(new KXGrouper()).build();
XML 設定
または、XML を使用して JBoss Data Grid を設定する場合:
<clustering> <hash> <groups enabled="true"> <grouper class="com.acme.KXGrouper" /> </groups> </hash> </clustering>