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
を使用して上記のスキーマの無効化など、それらを指定することもできます。