13.2. スキーマを検索するストラテジー


Kafka クライアントシリアライザーは 検索ストラテジーを 使用して、メッセージスキーマが Service Registry に登録されるアーティファクト ID およびグローバル ID を決定します。

特定のトピックおよびメッセージで、以下の Java インターフェースの実装を使用できます。

  • ArtifactIdStrategy、アーティファクト ID を返す。
  • GlobalIdStrategy、グローバル ID を返す。

各ストラテジーのクラスは、io.apicurio.registry.utils.serde.strategy パッケージに編成されます。デフォルトのストラテジーは、アーティファクト ID 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 ストラテジー

アーティファクト ID ストラテジーは、Kafka トピックおよびメッセージ情報を Service Registry のアーティファクト ID にマップする方法を提供します。マッピングの共通規則は、Kafka メッセージのキーと値のどちらにシリアライザーを使用するかによって、Kafka トピック名と key または value を結合することです。

ただし、Service Registry によって提供されるストラテジーを使用するか、io.apicurio.registry.utils.serde.strategy.ArtifactIdStrategy を実装するカスタム Java クラスを作成して、マッピングの代替規則を使用できます。

アーティファクト ID を返すストラテジー

Service Registry は、ArtifactIdStrategy の実装に基づいてアーティファクト ID を返す以下のストラテジーを提供します。

RecordIdStrategy
スキーマのフルネームを使用する Avro 固有のストラテジー。
TopicRecordIdStrategy
トピック名およびスキーマのフルネームを使用する Avro 固有のストラテジー。
TopicIdStrategy
トピック名と、key または value サフィックスを使用するデフォルトストラテジー。
SimpleTopicIdStrategy
トピック名のみを使用する単純なストラテジー。

グローバル ID ストラテジー

グローバル ID ストラテジーは、アーティファクト ID ストラテジーによって提供されるアーティファクト ID の下に登録されたスキーマの特定バージョンを見つけて識別します。すべてのアーティファクトのすべてのバージョンには、グローバルで一意の識別子が 1 つだけあり、それを使用してそのアーティファクトの内容を取得できます。このグローバル ID はすべての Kafka メッセージに含まれ、デシリアライザーは Service Registry からスキーマを適切にフェッチできます。

グローバル ID ストラテジーは、既存のアーティファクトバージョンを検索できます。見つからない場合は、使用するストラテジーに応じて登録できます。io.apicurio.registry.utils.serde.strategy.GlobalIdStrategy を実装するカスタム Java クラスを作成して、独自のストラテジーを指定することもできます。

グローバル ID を返すストラテジー

Service Registry は、GlobalIdStrategy の実装に基づいてグローバル ID を返す以下のストラテジーを提供します。

FindLatestIdStrategy
アーティファクト ID に基づいて最新のスキーマバージョンのグローバル ID を返すストラテジー。
FindBySchemaIdStrategy
アーティファクト ID に基づいてスキーマコンテンツと一致する、グローバル ID を返すストラテジー。
CachedSchemaIdStrategy
スキーマをキャッシュし、キャッシュされたスキーマのグローバル ID を使用するストラテジー。
GetOrCreateIdStrategy
アーティファクト ID に基づいて最新のスキーマを取得しようとし、存在しない場合は新しいスキーマを作成するストラテジー。
AutoRegisterIdStrategy
スキーマを更新し、更新されたスキーマのグローバル ID を使用するストラテジー。

グローバル ID ストラテジーの設定

グローバル ID ストラテジーに以下のアプリケーションプロパティーを設定できます。

  • Apicurio .registry.check-period-ms: リモートスキーマ検索期間をミリ秒単位で設定します。

アプリケーションプロパティーを Java システムプロパティーとして設定することも、Quarkus application.properties ファイルに含めることもできます。詳細は、Quarkus のドキュメント を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.