sybn sybn-util 项目说明文档 - 基于java的跨数据库联合查询

SybnMain - 主函数代理

2018-03-28
sybn

简介

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 中没有涉及这个类,后期另行说明.

Similar Posts

Comments

暂不开放评论! 可微信联系