您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页Zeus-Master-周期性调度策略实现

Zeus-Master-周期性调度策略实现

来源:二三四教育网

上文提到Zeus使用了开源的quartz来帮助其实现定时调度,但是展示给用的api有两种,一种就是quartz原生的类似cron表达式的设置,还有一种是每小时,每天这种设置,但是后台实现均是转换成quartz的api实现。

来看源码:

CronTrigger trigger = new CronTrigger(jd.getId(), "zeus",
      jd.getCronExpression());
detail = new JobDetail(jd.getId(), "zeus", TimerJob.class);
detail.getJobDataMap().put("jobId", jd.getId());
detail.getJobDataMap().put("dispatcher",
      context.getDispatcher());
context.getScheduler().scheduleJob(detail, trigger);

quartz中api需要一个 CronTrigger 触发器用来定时,还需要job来执行。Zeus写了一个通用的job,每个触发器都触发相同的任务,不同的是JobDetail内设置了需要触发的不同宙斯任务,以及分发任务的事件dispatcher;

public static class TimerJob implements Job {
   @Override
   public void execute(JobExecutionContext context)
         throws JobExecutionException {
      String jobId = context.getJobDetail().getJobDataMap()
            .getString("jobId");
      Dispatcher dispatcher = (Dispatcher) context.getJobDetail()
            .getJobDataMap().get("dispatcher");
      ScheduleTriggerEvent ste = new ScheduleTriggerEvent(jobId);
      dispatcher.forwardEvent(ste);
   }
}

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务