可以配置Kafka Connector transforms以进行一个轻量级的消息修改。transforms可以方面的修改数据以及事件路由。
接下来我们将介绍如何配置一个transform。
首先,我们要在任务中配置transform,无论source 还是sink都可以配置transform
{
"name": "test-source",
"config": {
"connector.class": "io.debezium.connector.mysql.MySqlConnector",
"database.hostname": "localhost",
"database.port": "3306",
"database.user": "root",
"database.password": "root",
"tombstones.on.delete": "false",
"database.server.id": "1",
"database.server.name": "test-server",
"database.history.kafka.topic": "test-server-history",
"database.history.kafka.bootstrap.servers": "localhost:9092",
"include.schema.changes": "true",
"database.serverTimezone": "Asia/Shanghai",
"database.driver": "com.mysql.jdbc.Driver",
"database.history.kafka.recovery.poll.interval.ms": "3000",
"defaultFetchSize": "1000",
"database.tinyInt1isBit": "false",
"snapshot.locking.mode": "none",
"decimal.handling.mode": "string",
"transforms": "MakeMap,InsertSource",
"transforms.MakeMap.type":"org.apache.kafka.connect.transforms.HoistField$Value",
"transforms.MakeMap.field":"line",
"transforms.InsertSource.type":"org.apache.kafka.connect.transforms.InsertField$Value",
"transforms.InsertSource.static.field":"data_source",
"transforms.InsertSource.static.value":"test-file-source"
}
}
这是官方配置一个transforms的例子。主要配置有transforms,这个key下面主要配置有哪些transforms,在有多个transforms的情况下,transform执行的顺序是按照配置的顺序,在本文后面我们会贴出源码来向大家说明。</