13.4.3. Service Registry を使用した Protobuf SerDe の設定
Service Registry は、Google Protobuf の Kafka クライアントシリアライザーおよびデシリアライザークラスを提供し、Protobuf を可能な限り簡単に使用できるようにします。
-
io.apicurio.registry.utils.serde.ProtobufKafkaSerializer
-
io.apicurio.registry.utils.serde.ProtobufKafkaDeserializer
Protobuf シリアライザーの設定
Protobuf シリアライザークラスを以下の方法で設定できます。
- URL としての Service Registry の場所
- アーティファクト ID ストラテジー
- グローバル ID ストラテジー
- グローバル ID の場所
- グローバル ID ハンドラー
Protobuf デシリアライザーの設定
シリアライザーの設定と一致するように、Protobuf デシリアライザークラスを設定する必要があります。これにより、Protobuf デシリアライザークラスを以下の方法で設定できます。
- URL としての Service Registry の場所
- グローバル ID ハンドラー
これらの設定オプションについては、シリアライザーセクションを参照してください。プロパティー名と値は同じです。
デシリアライザーの設定時には、以下のオプションは必要ありません。
- アーティファクト ID ストラテジー
- グローバル ID ストラテジー
- グローバル ID の場所
これらのオプションは必要ない理由は、デシリアライザークラスはこの情報をメッセージ自体から把握できることです。2 つのストラテジーの場合、シリアライザーはメッセージの一部としてスキーマのグローバル ID を送信するため、それらは必要ありません。
グローバル ID の場所は、メッセージペイロードの開始時にマジックバイトを確認するだけで、(デシリアライザーによって)決定されます。そのバイトが見つかった場合、グローバル ID はメッセージペイロードから読み取られます(設定されたハンドラーを使用)。マジックバイトが見つからない場合、グローバル ID はメッセージヘッダーから読み取られます。
Protobuf デシリアライザーは、正確な Protobuf Message 実装へデシリアライズしませんが、DynamicMessage
インスタンスにはデシリアライズされません(そうでない場合には適切な API がないため)。