JdbcSinkConnector
public class JdbcSinkConnector extends SinkConnector {
public Class<? extends Task> taskClass() {
}
@Override
public List<Map<String, String>> taskConfigs(int maxTasks) {
}
@Override
public void start(Map<String, String> props) {
}
@Override
public void stop() {
}
@Override
public ConfigDef config() {
}
@Override
public Config validate(Map<String, String> connectorConfigs) {
}
@Override
public String version() {
}
}
start: connect启动时的生命周期方法,props为创建connect实例时填写的config参数,例如:
{
"name": "jdbc-sink-debezium",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"tasks.max": "1",
"topics": "mysql02.debezium_test_db.person2",
"table.name.format": "test.person",
"connection.url": "jdbc:db2://192.168.84.136:50000/TEST",
"connection.user": "db2inst1",
"connection.password": "root1234",
"transforms": "unwrap",
"transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState",
"transforms.unwrap.drop.tombstones": "false",
"auto.create": "true",
"auto.evolve": "true",
"insert.mode": "insert",
"delete.enabled": "true",
"pk.fields": "id",
"pk.mode": "record_key"
}
}
taskClass: 指定真正执行任务的类,必须为SinkTask的子类
taskConfigs: 传递给任务对象的配置
这个类的作用主要时指定了任务类为JdbcSinkTask,并且将启动参数原封不动的传递给任务对象。
JdbcSinkTask
public class JdbcSinkTask extends SinkTask {
@Override
public void start(final Map<String, String> props) {
}
@Override
public void put(Collection<SinkRecord> records) {
}
public void stop() {
}
}
start: props为接受的启动参数,由JdbcSinkConnector的taskConfigs提供
put: connect从kafka中获取到的数据后会封装成record对象调用这个put方法
stop: 任务关闭时执行的生命周期方法
start
先看start方法:
@Override
public void start(final Map<String, String> props) {
log.info("Starting JDBC Sink task");
config = new JdbcSinkConfig(props)</