Docs 菜单

主题命名

本页上的示例展示了如何配置 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.prefixtopic.suffix设置应用于主题名称。

以下示例展示如何指定topic.namespace.map设置来定义从carDb数据库到automobiles主题的主题命名空间映射,以及从carDb.ev命名空间到electricVehicles主题的主题命名空间映射:

topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles"}

由于carDb.ev命名空间映射优先于carDb映射,因此connector会执行以下操作:

  • 如果变更事件来自数据库carDb和集合ev ,则连接器会将目标设置为electricVehicles主题。

  • 如果更改事件来自数据库carDbev以外的集合,则连接器会将目标设置为automobiles.<collectionName>主题。

  • 如果变更文档来自carDb以外的任何数据库,连接器会将目标主题设置为默认命名空间命名方案。

  • 如果已定义,Connector将在执行命名空间映射后将topic.prefixtopic.suffix设置应用于目标主题名称。

除了在主题命名空间映射中指定数据库名称和命名空间(如主题命名空间映射示例中所示)之外,您还可以使用通配符*来匹配来自所有没有映射的数据库和命名空间的变更事件。

topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles", "*": "otherVehicles"}

在前面的通配符示例中,connector将源自carDb以外的所有数据库的文档发布到主题otherVehicles