コード例 #1
0
ファイル: RemoteHttpJobBean.java プロジェクト: ykkssb/xxl-job
  @Override
  protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    JobKey jobKey = context.getTrigger().getJobKey();

    XxlJobInfo jobInfo =
        DynamicSchedulerUtil.xxlJobInfoDao.load(jobKey.getGroup(), jobKey.getName());
    // save log
    XxlJobLog jobLog = new XxlJobLog();
    jobLog.setJobGroup(jobInfo.getJobGroup());
    jobLog.setJobName(jobInfo.getJobName());
    jobLog.setJobCron(jobInfo.getJobCron());
    jobLog.setJobDesc(jobInfo.getJobDesc());
    jobLog.setJobClass(jobInfo.getJobClass());
    DynamicSchedulerUtil.xxlJobLogDao.save(jobLog);
    logger.info(">>>>>>>>>>> xxl-job trigger start, jobId:{}", jobLog.getId());

    // trigger request
    HashMap<String, String> params = new HashMap<String, String>();
    params.put(HandlerParamEnum.TIMESTAMP.name(), String.valueOf(System.currentTimeMillis()));
    params.put(HandlerParamEnum.ACTION.name(), ActionEnum.RUN.name());

    params.put(
        HandlerParamEnum.LOG_ADDRESS.name(), XxlJobLogCallbackServer.getTrigger_log_address());
    params.put(HandlerParamEnum.LOG_ID.name(), String.valueOf(jobLog.getId()));

    params.put(HandlerParamEnum.EXECUTOR_HANDLER.name(), jobInfo.getExecutorHandler());
    params.put(HandlerParamEnum.EXECUTOR_PARAMS.name(), jobInfo.getExecutorParam());

    params.put(HandlerParamEnum.GLUE_SWITCH.name(), String.valueOf(jobInfo.getGlueSwitch()));
    params.put(HandlerParamEnum.JOB_GROUP.name(), jobInfo.getJobGroup());
    params.put(HandlerParamEnum.JOB_NAME.name(), jobInfo.getJobName());

    // failover trigger
    RemoteCallBack callback = failoverTrigger(jobInfo.getExecutorAddress(), params, jobLog);
    jobLog.setExecutorHandler(
        jobInfo.getGlueSwitch() == 0 ? jobInfo.getExecutorHandler() : "GLUE任务");
    jobLog.setExecutorParam(jobInfo.getExecutorParam());
    logger.info(
        ">>>>>>>>>>> xxl-job failoverTrigger response, jobId:{}, callback:{}",
        jobLog.getId(),
        callback);

    // update trigger info
    jobLog.setTriggerTime(new Date());
    jobLog.setTriggerStatus(callback.getStatus());
    jobLog.setTriggerMsg(callback.getMsg());
    DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog);

    // monitor triger
    JobMonitorHelper.monitor(jobLog.getId());

    logger.info(">>>>>>>>>>> xxl-job trigger end, jobId:{}", jobLog.getId());
  }