|
@@ -1,11 +1,13 @@
|
|
|
package org.dbsyncer.listener.extractor;
|
|
|
|
|
|
+import org.dbsyncer.connector.config.DatabaseConfig;
|
|
|
import org.dbsyncer.listener.DefaultExtractor;
|
|
|
+import org.dbsyncer.listener.mysql.binlog.BinlogEventListener;
|
|
|
+import org.dbsyncer.listener.mysql.binlog.BinlogEventV4;
|
|
|
+import org.dbsyncer.listener.mysql.binlog.BinlogRemoteClient;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
-
|
|
|
/**
|
|
|
* @version 1.0.0
|
|
|
* @Author AE86
|
|
@@ -15,22 +17,22 @@ public class MysqlExtractor extends DefaultExtractor {
|
|
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
|
- boolean running;
|
|
|
+ private BinlogRemoteClient client;
|
|
|
|
|
|
@Override
|
|
|
public void extract() {
|
|
|
- running = true;
|
|
|
- for (int i = 0; i < 20; i++) {
|
|
|
- if(!running){
|
|
|
- logger.info("中止监听任务");
|
|
|
- break;
|
|
|
- }
|
|
|
- logger.info("模拟监听任务");
|
|
|
- try {
|
|
|
- TimeUnit.SECONDS.sleep(3);
|
|
|
- } catch (InterruptedException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
+ try {
|
|
|
+ init();
|
|
|
+
|
|
|
+ client.setBinlogEventListener(new BinlogEventListener() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onEvents(BinlogEventV4 event) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ client.start();
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("启动失败:{}", e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -41,6 +43,23 @@ public class MysqlExtractor extends DefaultExtractor {
|
|
|
|
|
|
@Override
|
|
|
public void close() {
|
|
|
- running = false;
|
|
|
+ try {
|
|
|
+ client.stopQuietly();
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("关闭失败:{}", e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void init() {
|
|
|
+ final DatabaseConfig config = (DatabaseConfig) super.connectorConfig;
|
|
|
+ // TODO 支持解析集群地址 jdbc:mysql://127.0.0.1:3306/test?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF8&useSSL=true
|
|
|
+ String url = config.getUrl();
|
|
|
+ String username = config.getUsername();
|
|
|
+ String password = config.getPassword();
|
|
|
+ String threadSuffixName = "";
|
|
|
+
|
|
|
+ client = new BinlogRemoteClient("127.0.0.1", 3306, username, password, threadSuffixName);
|
|
|
+ client.setBinlogFileName("mysql-bin.000001");
|
|
|
+ client.setBinlogPosition(4);
|
|
|
}
|
|
|
}
|