12.6.5. Debezium 送信トレイメッセージでのペイロードフォーマットとしての Avro の使用

送信トレイイベントルーター SMT は、任意のペイロードフォーマットをサポートします。送信トレイテーブルの ペイロード 列値が透過的に渡されます。JSON を使用する代わりに、Avro を使用することもできます。これは、メッセージフォーマットの管理や、送信トレイイベントスキーマの後方互換性を維持した進化の確保に役立ちます。

送信トレイメッセージペイロード用にソースアプリケーションがどのように Avro フォーマットのコンテンツを生成するかは、本ドキュメントの範囲外です。KafkaAvroSerializer クラスを使用して GenericRecord インスタンスをシリアライズすることが考えられます。Kafka メッセージの値が正確な Avro バイナリーデータとなるようにするには、以下の設定をコネクターに適用します。

transforms=outbox,...
transforms.outbox.type=io.debezium.transforms.outbox.EventRouter
value.converter=io.debezium.converters.ByteBufferConverter

デフォルトでは、ペイロード 列値(Avro データ)は、唯一のメッセージ値です。ByteBufferConverter を値コンバーターとして設定すると、ペイロード 列値をそのまま Kafka メッセージ値に伝播します。

ハートビート、トランザクションメタデータ、またはスキーマ変更イベントを出力するように Debezium コネクターを設定することができます (サポートはコネクターによって異なります)。これらのイベントは ByteBufferConverter でシリアライズできないため、コンバーターがこれらのイベントのシリアライズ方法を認識するように追加の設定を指定する必要があります。以下の設定は、スキーマなしで Apache Kafka JsonConverter を使用する方法を示しています。

transforms=outbox,...
transforms.outbox.type=io.debezium.transforms.outbox.EventRouter
value.converter=io.debezium.converters.ByteBufferConverter
value.converter.delegate.converter.type=org.apache.kafka.connect.json.JsonConverter
value.converter.delegate.converter.type.schemas.enable=false

delegate Converter 実装は、delegate.converter.type オプションで指定します。コンバーターで追加の設定オプションが必要な場合は、schema .enable=false を使用して上記のスキーマの無効化など、それらを指定することもできます。