Можно ли применять SMT (преобразования одного сообщения) только к сообщениям из указанных тем? - PullRequest
0 голосов
/ 11 апреля 2019

Я передаю события изменения базы данных из базы данных MySql в Kafka, используя коннектор Debezium MySql.Мне нужно применить конкретные преобразования к записям из некоторых указанных таблиц (но не из других).Есть ли способ сделать это, используя только преобразования отдельных сообщений Kafka Connect (без Kafka Streams или KSQL)?Я даже не против написать собственный SMT.Но я не могу найти, как я могу указать сообщениям, из каких таблиц / тем применять SMT.Спасибо.

[UPD] После короткого исследования я решил использовать для этого KSQL.Спасибо всем за ответы

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Если вы внедряете пользовательский SMT, вы можете просто изучить тему входящих записей и просто вернуть записи без изменений по тем темам, для которых вы не хотите применять логику преобразования.

0 голосов
/ 11 апреля 2019

Вы не можете применять SMT только к определенной теме.Соединитель, будь то Sink или Source, всегда применяет определенный SMT к каждому сообщению, которое оно обработало.

Существует возможность, что SMT имеет некоторую сложную логику и зависит от некоторых данных внутри сообщения (номер раздела темы, ключи т. д.) делать какую-то работу или нет.Описывать подход не рекомендуется, потому что SMT должен облегчать обработку (для более сложных вы должны использовать Kafka Streams).По этой причине SMT из org.apache.kafka.connect.transforms.* не имеет такой логики.

Если вы хотите применить SMT только к определенной теме, вы можете создать разные соединители для каждой таблицы (темы).

...