Kafka JDBC Connect: вставить ключ на основе нескольких значений в полях сообщения - PullRequest
0 голосов
/ 25 октября 2018

У меня есть следующий json по теме, которую соединитель JDBC публикует в

{"APP_SETTING_ID":9,"USER_ID":10,"APP_SETTING_NAME":"my_name","SETTING_KEY":"my_setting_key"}

Вот мой файл соединителя

name=data.app_setting
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
poll.interval.ms=500
tasks.max=4
mode=timestamp
query=SELECT APP_SETTING_ID, APP_SETTING_NAME, SETTING_KEY,FROM MY_TABLE with (nolock)
timestamp.column.name=LAST_MOD_DATE
topic.prefix=data.app_setting

key.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=false
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false

Теперь я хочу вставить ключ к этому сообщению с помощьюумножение двух целочисленных полей - APP_SETTING_ID и USER_ID.Таким образом, ключ к этому сообщению становится 9*10 = 90

Возможно ли это преобразование через Connect, и если это так, может кто-то, пожалуйста, пролить свет на него

1 Ответ

0 голосов
/ 25 октября 2018

Я бы попробовал посмотреть, как далеко вы сможете продвинуться с

query=SELECT APP_SETTING_ID, APP_SETTING_NAME, SETTING_KEY, (APP_SETTING_ID*USER_ID) as _key FROM MY_TABLE with (nolock)

Затем добавьте преобразование ExtractKey

transforms=AddKeys,ExtractKey
# this make a map
transforms.AddKeys.type=org.apache.kafka.connect.transforms.ValueToKey
transforms.AddKeys.fields=_key  
# this gets one field from the map 
transforms.ExtractKey.type=org.apache.kafka.connect.transforms.ExtractField$Key
transforms.ExtractKey.field=_key  
...