私はKafkaを勉強しています。私はAvroを使ってKafkaのトピックをSchemaで使用するのが理にかなっています。Avro + Schema Registryを使用しているときに、スキーマ定義からメッセージをシリアライズ/デシリアライズする方法を教えてください。
しかし、それはスキーマ定義を置く場所に来るとき、私は何かが欠けています:
私はスキーマレジストリを使用しますが、私のプロジェクト内のアブロファイルを持っていない場合、私はJavaクラスを生成することができますし、メッセージを送信するときに抽象レイヤーとして使用します。これはとても素晴らしいですが、私はこのファイルの複数のバージョンを複数のプロジェクトに持っています。私はそれらを同期させておくと傷つくだろうと想像することができます。
スキーマレジストリを使用する場合、上記の問題は解決されます。しかし今は、メッセージを作成するときにスキーマ定義から利益を得る方法はありません。GenericRecordオブジェクトを手動で生成してKafkaに送信する必要があり、生成したメッセージがスキーマと一致するかどうかを確認する方法はありません。
また、コンシューマ側のメッセージをデシリアライズするためにスキーマを使用する方法もありません。
メッセージのシリアル化とデシリアライズ時にスキーマ定義から利益を得る方法はありますか?
特に、スキーマレジストリを使用して、両端でこれを行う例は見つかりません。