Можно ли применять SMT (преобразования отдельных сообщений) только к сообщениям из указанных тем

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

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


person Ruslan    schedule 11.04.2019    source источник
comment
Вы можете создать отдельный коннектор для каждой таблицы, а затем применить SMT только к нужным темам.   -  person Bartosz Wardziński    schedule 11.04.2019
comment
Да, это тоже вариант, спасибо. Но я хочу, чтобы кто-то подтвердил, что применение SMT только к определенным темам невозможно, прежде чем я рассмотрю любой другой сценарий.   -  person Ruslan    schedule 11.04.2019


Ответы (2)


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

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

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

person Bartosz Wardziński    schedule 11.04.2019
comment
Спасибо за Ваш ответ. Скорее всего, для этого я буду использовать потоки Kafka. - person Ruslan; 12.04.2019

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

person Gunnar    schedule 15.04.2019
comment
Да, это правильный путь в случае реализации нестандартного SMT. Я спрашивал, есть ли способ сделать это без написания собственного SMT. В конце концов я решил использовать для этой задачи KSQL. - person Ruslan; 03.05.2019