9.4. スキーマ検索のストラテジー
Service Registry ストラテジー は、Service Registry でメッセージスキーマが登録されるアーティファクト ID またはグローバル ID を判断するために、Kafka クライアントシリアライザー/デシリアライザーによって使用されます。
特定のトピックおよびメッセージで、以下の Java クラスの実装を使用できます。
-
ArtifactIdStrategy、アーティファクト ID を返す。 -
GlobalIdStrategy、グローバル ID を返す。
返されるアーティファクト ID は、メッセージの キー または 値 のどちらがシリアライズされるかによって異なります。
各 ストラテジー のクラスは、io.apicurio.registry.utils.serde.strategy パッケージにまとめられています。
デフォルトのストラテジー、TopicIdStrategy は、メッセージを受信する Kafka トピックと同じ名前の Service Registry アーティファクトを検索します。
以下は例になります。
public String artifactId(String topic, boolean isKey, T schema) {
return String.format("%s-%s", topic, isKey ? "key" : "value");
}
public String artifactId(String topic, boolean isKey, T schema) {
return String.format("%s-%s", topic, isKey ? "key" : "value");
}
-
topicパラメーターは、メッセージを受信する Kafka トピックの名前です。 -
isKeyパラメーター は、メッセージキーがシリアライズされる場合は true、メッセージ値がシリアライズされる場合は false です。 -
schemaパラメーターは、シリアライズ/デシリアライズされるメッセージのスキーマです。 -
返される
artifactIDは、スキーマが Service Registry に登録される ID です。
使用する検索アップストラテジーは、スキーマを保存する方法と場所によって異なります。たとえば、同じ Avro メッセージタイプを持つ Kafka トピックが複数ある場合、レコード ID を使用するストラテジーを使用することがあります。
アーティファクト ID を返すストラテジー
これらのストラテジーは、ArtifactIdStrategy の実装に基づいてアーティファクト ID を返します。
RecordIdStrategy- スキーマのフルネームを使用する Avro 固有のストラテジー。
TopicRecordIdStrategy- トピック名およびスキーマのフルネームを使用する Avro 固有のストラテジー。
TopicIdStrategy-
(デフォルト) トピック名と、
keyまたはvalue接尾辞を使用するストラテジー。 SimpleTopicIdStrategy- トピック名のみを使用する単純なストラテジー。
グローバル ID を返すストラテジー
これらのストラテジーは、GlobalIdStrategy の実装に基づいてグローバル ID を返します。
FindLatestIdStrategy- アーティファクト ID に基づいて最新のスキーマバージョンのグローバル ID を返すストラテジー。
FindBySchemaIdStrategy- アーティファクト ID に基づいてスキーマコンテンツと一致する、グローバル ID を返すストラテジー。
GetOrCreateIdStrategy- アーティファクト ID に基づいて最新スキーマの取得を試み、スキーマが存在しなければ新規スキーマを作成するストラテジー。
AutoRegisterIdStrategy- スキーマを更新し、更新されたスキーマのグローバル ID を使用するストラテジー。