主题命名
本页上的示例展示了如何配置 MongoDB Kafka connector,以自定义其将记录发布到的主题的名称。
默认, MongoDB Kafka Source Connector将变更事件数据发布到Kafka主题,该主题与发起变更事件的MongoDB命名空间同名。 命名空间是一个string ,由数据库和集合名称用点“.”连接起来组成。 字符。
以下示例展示了自定义Connector将变更事件数据发布到的Kafka主题的不同方法:
主题前缀示例
您可以配置源connector,在事件数据的命名空间前添加一个字符串,并将记录发布到该 Kafka 主题。此设置会自动使用“.”将前缀与命名空间连接起来。 字符。
要指定主题前缀,请使用 topic.prefix
配置设置,如以下示例所示:
topic.prefix=myPrefix database=test collection=data
设置完成后,connector将对数据库test
中的collectiondata
的任何更改发布到名为myPrefix.test.data
的 Kafka 主题。
主题后缀示例
您可以配置您的源connector,将字符串附加到变更事件的命名空间,并将记录发布到那个Kafka主题。此设置会自动将命名空间与后缀用“.”连接起来。 字符。
要指定主题后缀,请使用topic.suffix
配置设置,如以下示例所示:
topic.suffix=mySuffix database=test collection=data
设置完成后,connector将对数据库test
中的collectiondata
的任何更改发布到名为test.data.mySuffix
的 Kafka 主题。
主题命名空间映射示例
您可以配置源connector ,将命名空间值映射到传入变更事件数据的Kafka主题名称。
如果变更事件的数据库名称或命名空间与映射中的某一字段匹配,则Connector会将记录发布到与该映射对应的值。
如果变更事件的数据库名称或命名空间与任何映射都不匹配,则Connector将使用默认主题命名方案发布记录,除非不同主题命名设置另有指定。
任何同时包含数据库和collection的映射都优先于仅指定源数据库名称的映射。
重要
命名空间映射匹配发生在connector应用任何其他主题命名设置之前。如果已定义,connector则会在映射后将topic.prefix
和topic.suffix
设置应用于主题名称。
以下示例展示如何指定topic.namespace.map
设置来定义从carDb
数据库到automobiles
主题的主题命名空间映射,以及从carDb.ev
命名空间到electricVehicles
主题的主题命名空间映射:
topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles"}
由于carDb.ev
命名空间映射优先于carDb
映射,因此connector会执行以下操作:
如果变更事件来自数据库
carDb
和集合ev
,则连接器会将目标设置为electricVehicles
主题。如果更改事件来自数据库
carDb
和ev
以外的集合,则连接器会将目标设置为automobiles.<collectionName>
主题。如果变更文档来自
carDb
以外的任何数据库,连接器会将目标主题设置为默认命名空间命名方案。如果已定义,Connector将在执行命名空间映射后将
topic.prefix
和topic.suffix
设置应用于目标主题名称。
带通配符的主题命名空间映射示例
除了在主题命名空间映射中指定数据库名称和命名空间(如主题命名空间映射示例中所示)之外,您还可以使用通配符*
来匹配来自所有没有映射的数据库和命名空间的变更事件。
topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles", "*": "otherVehicles"}
在前面的通配符示例中,connector将源自carDb
以外的所有数据库的文档发布到主题otherVehicles
。