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"); }
-
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 を使用するストラテジー。