我正在使用Debezium MySql连接器将数据库更改事件从MySql数据库流式传输到Kafka。我需要对某些指定的表(而不是其他表)的记录进行特定的转换。是否可以仅使用Kafka Connect单消息转换(不使用Kafka流或KSQL)来做到这一点?我什至不介意编写自定义SMT。但是我找不到如何指定要从哪些表/主题应用SMT的消息。谢谢。
[UPD]经过简短的调查,我决定为此使用KSQL。谢谢大家的回答
答案 0 :(得分:1)
如果要实现自定义SMT,则可以简单地检查传入记录的主题,而只返回那些不希望应用转换逻辑的未更改记录。
答案 1 :(得分:0)
您不能仅将SMT应用于特定主题。连接器,无论是接收器还是源,总是将已定义的SMT应用于它处理的每个消息。
有一个选项可以使SMT具有一些复杂的逻辑,并取决于消息中的某些数据(主题名称分区号,键等)是否起作用。不建议使用描述方法,因为SMT应该进行轻量级处理(对于更复杂的情况,应使用Kafka Streams)。这就是 bool textCanceled = false;
private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (!Char.IsDigit((char)e.Key))
textCanceled = true;
else
textCanceled = false;
}
private void TextBox_BeforeTextChanging(TextBox sender, TextBoxBeforeTextChangingEventArgs args)
{
args.Cancel = textCanceled;
}
中的SMT没有这样的逻辑的原因。
如果仅将SMT应用于特定主题,则可以为每个表(主题)创建不同的连接器。