|
@@ -7,17 +7,12 @@ import org.dbsyncer.connector.ConnectorMapper;
|
|
import org.dbsyncer.connector.config.ConnectorConfig;
|
|
import org.dbsyncer.connector.config.ConnectorConfig;
|
|
import org.dbsyncer.parser.ParserFactory;
|
|
import org.dbsyncer.parser.ParserFactory;
|
|
import org.dbsyncer.parser.flush.AbstractBufferActuator;
|
|
import org.dbsyncer.parser.flush.AbstractBufferActuator;
|
|
|
|
+import org.dbsyncer.parser.model.*;
|
|
import org.dbsyncer.parser.strategy.FlushStrategy;
|
|
import org.dbsyncer.parser.strategy.FlushStrategy;
|
|
-import org.dbsyncer.parser.model.WriterRequest;
|
|
|
|
-import org.dbsyncer.parser.model.WriterResponse;
|
|
|
|
-import org.dbsyncer.parser.model.BatchWriter;
|
|
|
|
-import org.dbsyncer.parser.model.Connector;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
|
|
|
|
-import java.util.Collections;
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* @author AE86
|
|
* @author AE86
|
|
* @version 1.0.0
|
|
* @version 1.0.0
|
|
@@ -51,22 +46,26 @@ public class WriterBufferActuator extends AbstractBufferActuator<WriterRequest,
|
|
if (response.isMerged()) {
|
|
if (response.isMerged()) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- response.setMetaId(request.getMetaId());
|
|
|
|
- response.setTargetConnectorId(request.getTargetConnectorId());
|
|
|
|
- response.setSourceTableName(request.getSourceTableName());
|
|
|
|
- response.setTargetTableName(request.getTargetTableName());
|
|
|
|
|
|
+ response.setTableGroupId(request.getTableGroupId());
|
|
response.setEvent(request.getEvent());
|
|
response.setEvent(request.getEvent());
|
|
- response.setFields(Collections.unmodifiableList(request.getFields()));
|
|
|
|
- response.setCommand(request.getCommand());
|
|
|
|
response.setMerged(true);
|
|
response.setMerged(true);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
protected void pull(WriterResponse response) {
|
|
protected void pull(WriterResponse response) {
|
|
- ConnectorMapper targetConnectorMapper = connectorFactory.connect(getConnectorConfig(response.getTargetConnectorId()));
|
|
|
|
- Result result = parserFactory.writeBatch(new BatchWriter(targetConnectorMapper, response.getCommand(), response.getTargetTableName(), response.getEvent(),
|
|
|
|
- response.getFields(), response.getDataList(), BATCH_SIZE));
|
|
|
|
- flushStrategy.flushIncrementData(response.getMetaId(), result, response.getEvent());
|
|
|
|
|
|
+ // 1、获取配置信息
|
|
|
|
+ final TableGroup tableGroup = cacheService.get(response.getTableGroupId(), TableGroup.class);
|
|
|
|
+ final Mapping mapping = cacheService.get(tableGroup.getMappingId(), Mapping.class);
|
|
|
|
+ final String targetTableName = tableGroup.getTargetTable().getName();
|
|
|
|
+ final Picker picker = new Picker(tableGroup.getFieldMapping());
|
|
|
|
+
|
|
|
|
+ // 2、批量执行同步
|
|
|
|
+ ConnectorMapper targetConnectorMapper = connectorFactory.connect(getConnectorConfig(mapping.getTargetConnectorId()));
|
|
|
|
+ Result result = parserFactory.writeBatch(new BatchWriter(targetConnectorMapper, tableGroup.getCommand(), targetTableName, response.getEvent(),
|
|
|
|
+ picker.getTargetFields(), response.getDataList(), BATCH_SIZE));
|
|
|
|
+
|
|
|
|
+ // 3、持久化同步结果
|
|
|
|
+ flushStrategy.flushIncrementData(mapping.getMetaId(), result, response.getEvent());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|