azkaban ExecutorManager源碼剖析

azkaban 有三大模塊,azkaban-common,azkaban-exec-server,azkaban-web-server.

  • azkaban-common是公共模塊,比如訪問數據庫,trigger管理工具,郵件工具,以及job.

  • azkaban-exec-server是執行器,主要用于執行任務

  • azkaban-web-server是調度中心,用于任務展示、編輯,調度任務

azkaban-common ExecutorManager

ExecutorManager是用于管理執行器的job

  /**
   * 創建ExecutorManager
   * @param loader
   * @return
   * @throws ExecutorManagerException
     */
  static ExecutorManager createExecutor(ExecutorLoader loader) throws ExecutorManagerException{

    Props props = new Props();
    props.put(ExecutorManager.AZKABAN_USE_MULTIPLE_EXECUTORS, "true");
    props.put(ExecutorManager.AZKABAN_QUEUEPROCESSING_ENABLED, "false");

      loader.addExecutor("localhost", 12345);
      loader.addExecutor("localhost", 12346);
    return new ExecutorManager(props, loader, new HashMap<String, Alerter>());
  }


  public static void main(String[] args) {
    try {
      ExecutorLoader loader =  new MockExecutorLoader();
      ExecutorManager manager = createExecutor(loader);
      System.out.println(manager.getAllActiveExecutors().size());
      System.out.println(manager.getQueuedFlowSize());
      System.out.println(manager.isQueueProcessorThreadActive());


      //添加flow,執行flow
      ExecutableFlow flow1 =  TestUtils.createExecutableFlow("exectest1", "exec1");
      flow1.setExecutionId(1);
      User user = TestUtils.getTestUser();
      manager.submitExecutableFlow(flow1,user.getUserId());

      System.out.println(loader.fetchQueuedFlows().size());

    }catch (Exception e){

      System.out.println(e.getMessage());
    }

  }

輸出

2
0
false
1
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容