|
@@ -16,7 +16,6 @@ import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DefaultTableMetaTSDBFact
|
|
|
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaTSDB;
|
|
|
import com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaTSDBFactory;
|
|
|
import com.alibaba.otter.canal.protocol.position.EntryPosition;
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
|
|
|
public abstract class AbstractMysqlEventParser extends AbstractEventParser {
|
|
|
|
|
@@ -24,6 +23,9 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
|
|
|
|
|
|
protected TableMetaTSDBFactory tableMetaTSDBFactory = new DefaultTableMetaTSDBFactory();
|
|
|
protected boolean enableTsdb = false;
|
|
|
+ protected String tsdbJdbcUrl;
|
|
|
+ protected String tsdbJdbcUserName;
|
|
|
+ protected String tsdbJdbcPassword;
|
|
|
protected int tsdbSnapshotInterval = 24;
|
|
|
protected int tsdbSnapshotExpire = 360;
|
|
|
protected String tsdbSpringXml;
|
|
@@ -149,14 +151,7 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
|
|
|
if (enableTsdb) {
|
|
|
if (tableMetaTSDB == null) {
|
|
|
synchronized (CanalEventParser.class) {
|
|
|
- try {
|
|
|
- // 设置当前正在加载的通道,加载spring查找文件时会用到该变量
|
|
|
- System.setProperty("canal.instance.destination", destination);
|
|
|
- // 初始化
|
|
|
- tableMetaTSDB = tableMetaTSDBFactory.build(destination, tsdbSpringXml);
|
|
|
- } finally {
|
|
|
- System.setProperty("canal.instance.destination", "");
|
|
|
- }
|
|
|
+ buildTableMetaTSDB(tsdbSpringXml);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -173,6 +168,28 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
|
|
|
super.stop();
|
|
|
}
|
|
|
|
|
|
+ protected void buildTableMetaTSDB(String tsdbSpringXml) {
|
|
|
+ if (tableMetaTSDB != null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 设置当前正在加载的通道,加载spring查找文件时会用到该变量
|
|
|
+ System.setProperty("canal.instance.tsdb.url", tsdbJdbcUrl);
|
|
|
+ System.setProperty("canal.instance.tsdb.dbUsername", tsdbJdbcUserName);
|
|
|
+ System.setProperty("canal.instance.tsdb.dbPassword", tsdbJdbcPassword);
|
|
|
+ System.setProperty("canal.instance.destination", destination);
|
|
|
+ // 初始化
|
|
|
+ this.tableMetaTSDB = tableMetaTSDBFactory.build(destination, tsdbSpringXml);
|
|
|
+ } finally {
|
|
|
+ // reset
|
|
|
+ System.setProperty("canal.instance.destination", "");
|
|
|
+ System.setProperty("canal.instance.tsdb.url", "");
|
|
|
+ System.setProperty("canal.instance.tsdb.dbUsername", "");
|
|
|
+ System.setProperty("canal.instance.tsdb.dbPassword", "");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
protected MultiStageCoprocessor buildMultiStageCoprocessor() {
|
|
|
MysqlMultiStageCoprocessor mysqlMultiStageCoprocessor = new MysqlMultiStageCoprocessor(parallelBufferSize,
|
|
|
parallelThreadSize,
|
|
@@ -256,20 +273,14 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
|
|
|
public void setEnableTsdb(boolean enableTsdb) {
|
|
|
this.enableTsdb = enableTsdb;
|
|
|
if (this.enableTsdb) {
|
|
|
- if (tableMetaTSDB == null) {
|
|
|
- // 初始化
|
|
|
- tableMetaTSDB = tableMetaTSDBFactory.build(destination, tsdbSpringXml);
|
|
|
- }
|
|
|
+ buildTableMetaTSDB(tsdbSpringXml);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void setTsdbSpringXml(String tsdbSpringXml) {
|
|
|
this.tsdbSpringXml = tsdbSpringXml;
|
|
|
if (this.enableTsdb) {
|
|
|
- if (tableMetaTSDB == null) {
|
|
|
- // 初始化
|
|
|
- tableMetaTSDB = tableMetaTSDBFactory.build(destination, tsdbSpringXml);
|
|
|
- }
|
|
|
+ buildTableMetaTSDB(tsdbSpringXml);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -301,4 +312,15 @@ public abstract class AbstractMysqlEventParser extends AbstractEventParser {
|
|
|
this.tsdbSnapshotExpire = tsdbSnapshotExpire;
|
|
|
}
|
|
|
|
|
|
+ public void setTsdbJdbcUrl(String tsdbJdbcUrl) {
|
|
|
+ this.tsdbJdbcUrl = tsdbJdbcUrl;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTsdbJdbcUserName(String tsdbJdbcUserName) {
|
|
|
+ this.tsdbJdbcUserName = tsdbJdbcUserName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTsdbJdbcPassword(String tsdbJdbcPassword) {
|
|
|
+ this.tsdbJdbcPassword = tsdbJdbcPassword;
|
|
|
+ }
|
|
|
}
|