simpledatax基于阿里开源数据采集工具datax做了一些减法,适合特定的场景。关于阿里的datax请移步 https://github.com/alibaba/DataX
- 将datax进程调用改为线程内调用。修复初始化时实例之间的冲突。
- 将插件包和调度包集成到同一个包内,方便修改。
- 插件间不再使用不同的类加载器。插件预加载机制。同时不改变参数的json配置处理机制。
- 新增参数对象作为入参,封装接口,提取关键参数用于配置。
- 修改内部调度机制,移除sleep收集任务执行状态的机制,修改为各个任务执行完毕时汇报情况,使用Future获取返回结果,可以稍微提高下效率。
- 新增返回调度结果实例。用于界面展现。
- 移除TaskGroupContainer,只能单机使用,如果需要集群建议结合分布式服务框架使用。
- 调整了信息汇报部分代码,目前来看更加直观,也更易于修改。
- 请参考阿里各个插件的文档。如果有更新需要替换插件并调整下代码。
public static void main(String[] args) throws DxException {
DataCollectJob job = new DataCollectJob();
job.setJobId(1);
job.setChannelNum(2);
MySqlReader reader = new MySqlReader();
reader.setDbIp("192.168.0.120");
reader.setDbPort("3306");
reader.setDbInstanceName("test");
reader.setSplitPk("COL1");
reader.setDbUser("root");
reader.setDbPassword("root");
reader.setTableName("mysql_load_test");
reader.setColumnStrs("COL1,COL2,COL3,COL4");
job.setReader(reader);
MySqlWriter writer = new MySqlWriter();
writer.setDbIp("192.168.0.121");
writer.setDbPort("3306");
writer.setDbUser("root");
writer.setDbPassword("root");
writer.setTableName("mysql_load_test1");
writer.setColumnStrs("COL1,COL2,COL3,COL4");
writer.setDbInstanceName("test");
job.setWriter(writer);
DxService service = new DxService();
DataCollectResult result = service.collect(job);
System.out.println(JSON.toJSONString(result));
}
- 去除配置项的class类和代码里的全类名。
- 新增定时报告打印。
- 新增分片api。
- 新增执行任务时支持以单一分片执行任务。
- 新增终止采集api。