12.7.2. Debezium mongodb 送信トレイイベントルーター SMT が要求する送信トレイコレクションの構造

デフォルトの MongoDB 送信トレイイベントルーター SMT 設定を適用するには、送信トレイコレクションに以下のフィールドがなければなりません。

{
  "_id": "objectId",
  "aggregatetype": "string",
  "aggregateid": "objectId",
  "type": "string",
  "payload": "object"
}

表12.8 要求される送信トレイコレクションフィールドの説明

フィールド結果

id

イベントの一意の ID が含まれます。送信トレイメッセージでは、この値はヘッダーです。たとえば、重複するメッセージを削除するために、この ID を使用することができます。

イベントの一意の ID を別の送信トレイコレクションフィールドから取得するには、コネクター設定で collection.field.event.id SMT オプションを設定します。

aggregatetype

コネクターが送信トレイメッセージを出力するトピックの名前に SMT が追加する値が含まれます。デフォルトの動作では、この値は route.topic.replacement SMT オプションのデフォルトの ${routedByValue} 変数を置き換えます。

たとえば、デフォルト設定では、route.by.field SMT オプションは aggregatetype に設定され、route.topic.replacement SMT オプションは outbox.event.${routedByValue} に設定されます。アプリケーションが 2 つのドキュメントを送信トレイコレクションに追加するとします。最初のドキュメントでは、aggregatetype フィールドの値は customers です。2 番目のドキュメントでは、aggregatetype フィールドの値は orders です。コネクターは、最初のドキュメントを outbox.event.customers トピックに送信します。コネクターは、2 番目のドキュメントを outbox.event.orders トピックに送信します。

別の送信トレイコレクションフィールドからこの値を取得するには、コネクター設定で route.by.field SMT オプションを設定します。

aggregateid

ペイロードの ID を提供するイベントのキーが含まれます。SMT は、この値を出力される送信トレイメッセージのキーとして使用します。これは、Kafka パーティションで正しい順序を維持するのに重要です。

別の送信トレイコレクションフィールドからイベントキーを取得するには、コネクター設定で collection.field.event.key SMT オプションを設定します。

payload

送信トレイ変更イベントの表現。デフォルトの構造は JSON です。デフォルトでは、Kafka のメッセージ値は payload 値のみで設定されます。ただし、送信トレイイベントで追加のフィールドが含まれるように設定されている場合、Kafka メッセージ値にはペイロードと追加フィールドの両方のエンベロープエンプトが含まれ、各フィールドは個別に表されます。詳細は、Emitting messages with additional fieldsを参照してください。

別の送信トレイコレクションフィールドからイベントペイロードを取得するには、コネクター設定で collection.field.event.payload SMT オプションを設定します。

追加のカスタムフィールド

送信トレイコレクションの追加フィールドは、ペイロードセクション内に、またはメッセージヘッダーとして、送信トレイイベントに追加 できます。

一例として、イベントを分類または整理するのに役立つ、ユーザー定義の値を伝えるフィールド eventType などがあります。