我正在使用Debezium MySql连接器将数据库更改事件从MySql数据库流式传输到Kafka。我需要对某些指定表中的记录(但不是其他表(中的记录应用特定的转换。有没有办法只使用 Kafka Connect 单消息转换(没有 Kafka Streams 或 KSQL(?我什至不介意编写自定义 SMT。 但是我找不到如何指定要从哪些表/主题应用 SMT 的消息。 谢谢。
[UPD] 经过简短的调查,我决定使用 KSQL。谢谢大家的回答
您不能仅将 SMT 应用于特定主题。连接器(无论是接收器还是源(始终将定义的 SMT 应用于它处理的每条消息。
有一个选项是 SMT 具有一些复杂的逻辑,并且取决于消息中的某些数据(主题名称分区号、键等(是否执行某些工作。 不建议使用描述方法,因为 SMT 应该进行轻量级处理(对于更复杂的处理,您应该使用 Kafka Streams(。这就是为什么org.apache.kafka.connect.transforms.*
的SMT没有这样的逻辑。
如果只想将 SMT 应用于特定主题,则可以为每个表(主题(创建不同的连接器。
如果要实现自定义 SMT,则只需检查传入记录的主题,然后针对不希望应用转换逻辑的主题返回未更改的记录。