转换

连接器可以通过配置转换来对每条消息进行轻量级修改。Debezium 提供了多种 单消息转换 (SMT),您可以将其应用于 Debezium 连接器,在将记录发送到 Apache Kafka 之前进行修改,或者在 Sink 连接器从 Kafka 读取记录时进行修改。此外,Debezium Server 也支持 SMT 的使用。

Debezium 提供的 SMT 如下:

转换 描述

根据应用于原始主题名称的正则表达式,将记录重新路由到不同的主题。

根据事件内容,将选定的事件重新路由到其他主题。

从 Debezium 变更事件中提取字段名和值的扁平化结构,便于无法处理 Debezium 复杂事件结构的 Sink 连接器使用。

MongoDB 特有的,与 New Record State Extraction SMT 相对应的功能。

提供了一种在多个(微)服务之间安全可靠地交换数据的方式。

MongoDB 特有的,与 Outbox Event Router SMT 相对应的功能。

根据变更事件的内容应用过滤器,使其仅传播您关心的记录。

将消息头移动或复制到记录值中。

根据配置的载荷字段,将记录重新路由到特定分区。

将事件记录中的 Debezium 和 Kafka Connect 时间戳字段转换为指定的时区。

路由并丰富 Debezium PostgreSQL 连接器从 TimescaleDB 捕获的消息。

将 Debezium PostgreSQL 连接器捕获的逻辑解码消息的二进制内容转换为结构化形式。

一种转换,用于减少 Vitess 连接器发出的 VGTID 的大小。为了减少事件消息中的数据量,SMT 只会写入发生变更的分片的 VGTID。其他分片的 VGTID 会被移除。此转换仅设计用于 Debezium 的 Vitess 连接器。

Vitess 特有的转换,用于移除字段以减小写入消息的大小(例如,冗余的 VGTID 字段)。

Vitess 特有的转换,用于替换字段的值以减小写入消息的大小(例如,冗余的 VGTID 字段)。

一种转换,用于过滤掉连接器发送到事务主题的所有消息(当启用事务元数据时)。此转换仅设计用于 Debezium 的 Vitess 连接器。

通过 SMT Predicates,您可以选择性地应用任何转换,使其只修改共享共同特征的变更事件消息子集。

以上大多数 SMT 在 Debezium 容器镜像中默认可用,但脚本化 SMT(消息过滤或基于内容的路由)需要您选择启用。有关更多详细信息,请参阅容器镜像的 README 文件。