简介
SybnMain 工具属于 sybn-core 项目
设计思想类似 于 spark-submit ,用于将 jar 包中的多个主函数统一在一个入口进行管理。
SybnMain 有如下功能:
- 在 shell 参数中,以 –help 命令的形式,列出被代理的函数列表,及各个函数的功能介绍,供 shell 调用者选择。
- 统一管理所有被代理的函数的入参。
示例
- 常规写法:
/**
* 一个jar包只能有一个主函数: java -jar xxx.jar 123456
**/
public static void main(String[] args) throws InterruptedException {
// 执行任务
XxxJob.run(args[0]);
}
- 使用 SybnMain 后的写法
/**
* 根据指定配置文件执行指定job: java -jar xxx.jar --main=job_name_1 --profiles=./init_idc.properties --arg1=123456
**/
public static void main(String[] args) throws InterruptedException {
SybnMain main = new SybnMainEngine();
// 注册一个job,一个jar可以注册很多主函数
main.register(
"job_name_1", // 被注册的函数名
"说明:将42媒体的原始数据(baseData表)初步清洗为格式化数据(formatData表)", // 被注册的函数介绍
new Callable<ResultBase>() { // 被注册的函数
@Override
public ResultBase exec() throws Exception {
String arg1 = ReadConfUtil.getValue("arg1"); // 命令行参数或配置文件中的变量(重名时命令行优先)
return XxxJob.run(arg1); // 执行函数
}
}
);
// 继续注册其他job
main.register(...);
// 运行job
main.runMain(args);
}
-
说明
SybnMain 执行了如下操作:
- 验证命令行参数是不是指定了 –main=yq_etl_news 如果是则执行exec1; 否则报错;
- 如果jar中有多个可选任务,也可以在这里路由到exe2或者exe3, 具体情况参考 SybnMain 的注释,也可以看看demo类 SybnMainDemo
- 初始化 init_idc.properties, 这个配置文件可以在jar包内部或者外部(参考代码注释)
- 使用 ReadConfUtil.getValue() 可以读取到 命令行参数或者 init_idc.properties 文件中的值.
- 如果希望从数据库读取配置信息,需要使用 SqlServerSettingUtil 但 SybnMain 中没有涉及这个类,后期另行说明.