トピックの名前付け
このページの例は、MongoDB Kafka ソース コネクタを構成して、レコードを公開するトピックの名前をカスタマイズする方法を示しています。
デフォルトでは、MongoDB Kafka ソース コネクタは、変更イベントが発生した MongoDB名前空間と同じ名前の Kafka トピックに変更イベント データを公開します。 名前空間は、データベース名とコレクション名をドット()で連結したstringです。 文字の。
次の例は、コネクタが変更イベント データを公開する Kafka トピックをカスタマイズするさまざまな方法を示しています。
トピック プレフィックスの例
変更イベント データの名前空間の先頭に string を付加し、その Kafka トピックにレコードを公開するようにソース コネクタを構成できます。 この設定により、プレフィックスと名前空間が「.」と自動的に連結されます。 文字の。
トピック プレフィックスを指定するには、次の例に示すように、 topic.prefix
構成設定を使用します。
topic.prefix=myPrefix database=test collection=data
設定が完了すると、コネクタはtest
データベース内のdata
コレクションに対するすべての変更を、 myPrefix.test.data
という名前の Kafka トピックに公開します。
トピックサフィックスの例
変更イベント データの名前空間に string を追加し、その Kafka トピックにレコードを公開するようにソース コネクタを構成できます。 この設定により、名前空間とサフィックスが「」と自動的に連結されます。 文字の。
トピック サフィックスを指定するには、次の例に示すようにtopic.suffix
構成設定を使用します。
topic.suffix=mySuffix database=test collection=data
設定が完了すると、コネクタはtest
データベース内のdata
コレクションに対するすべての変更を、 test.data.mySuffix
という名前の Kafka トピックに公開します。
トピック名前空間マップの例
ソース コネクタを構成して、名前空間値を受信変更イベント データの Kafka トピック名にマッピングできます。
変更イベントのデータベース名または名前空間がマップ内のフィールドのいずれかと一致する場合、コネクタはそのマッピングに対応する値にレコードを公開します。
変更イベントのデータベース名または名前空間がどのマッピングとも一致しない場合、別のトピック命名設定で特に指定されていない限り、connector はデフォルトのトピック命名スキームを使用してレコードを公開します。
データベースとコレクションの両方を含むマッピングは、ソース データベース名のみを指定するマッピングよりも優先されます。
重要
名前空間マップの一致は、コネクタが他のトピック命名設定を適用する前に発生します。 定義されている場合、コネクタはマッピング後にドキュメント名にtopic.prefix
とtopic.suffix
設定を適用します。
次の例は、 topic.namespace.map
設定を指定して、 carDb
データベースからautomobiles
トピックへ、およびcarDb.ev
名前空間からelectricVehicles
トピックへのトピック名前空間マッピングを定義する方法を示しています。
topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles"}
carDb.ev
名前空間マッピングはcarDb
マッピングよりも優先されるため、コネクタは次のアクションを実行します。
変更イベントがデータベース
carDb
とコレクションev
から送信された場合、コネクタは宛先をelectricVehicles
トピックに設定します。変更イベントがデータベース
carDb
とev
以外のコレクションから送信された場合、コネクタは宛先をautomobiles.<collectionName>
トピックに設定します。変更ドキュメントが
carDb
以外のデータベースから取得された場合、コネクタは宛先トピックをデフォルトの名前空間命名スキームに設定します。定義されている場合、コネクタは名前空間マッピングを実行した後に宛先トピック名に
topic.prefix
とtopic.suffix
設定を適用します。
ワイルドカードを使用したトピック名前空間マップの例
トピック名前空間マップの例に示されているように、トピック名前空間マップでデータベース名と名前空間を指定するだけでなく、ワイルドカード*
を使用して、マッピングなしですべてのデータベースと名前空間の変更イベントを照合できます。
topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles", "*": "otherVehicles"}
前述のワイルドカードの例では、コネクタはcarDb
以外のすべてのデータベースに発生した変更ドキュメントをotherVehicles
トピックに公開します。