这是我用来立即激发job的代码:
public class ExecuteJob {
public static void now(String TriggerKey) throws SchedulerException {
scheduler = StdSchedulerFactory.getDefaultScheduler();
// retrieve the trigger
Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB));
scheduler.triggerJob(oldTrigger.getJobKey());
}
}
正如注释中所提到的,您需要确保调度程序已经启动,即使是在立即开始作业的情况下也是如此。
您可以使用isstarted()
方法与'is instandbymode()'和'is shutdown()'方法结合使用来检查这一点。
注意,isstarted
“只反映是否在此调度程序上调用过start(),因此即使调度程序当前处于备用模式或关闭后一直处于备用模式,它也会返回true”。
要启动计划程序,请使用start()
方法:
public static void now(String TriggerKey) throws SchedulerException {
scheduler = StdSchedulerFactory.getDefaultScheduler();
// retrieve the trigger
Trigger oldTrigger = scheduler.getTrigger(triggerKey(TriggerKey, GROUP_JOB));
// start the scheduler
if (!scheduler.isStarted() || scheduler.isInStandbyMode() || scheduler.isShutdown())
scheduler.start()
scheduler.triggerJob(oldTrigger.getJobKey());
}
问题内容: 是否可以建立可立即触发的工作?当我现在希望将工作触发时,我用当前日期和时间构建了一个cron表达式字符串- 我认为它太复杂了,是否有另一种方法可以立即触发该工作? 提前致谢。 问题答案: Quartz Scheduler中注册的所有作业均由JobKey唯一标识,该JobKey由名称和组组成。您可以触发具有给定的工作 JobKey 通过调用立即triggerJob(JobKey jobK
我想用quartz scheduler使用jdbc数据存储立即执行作业~。然而,即使我使用now()或调用triggerjob进行调度,在调度和触发器fire之间也有20-30秒的延迟。 我尝试用一个简单的触发器执行作业: 并且我还尝试用调度程序触发: 下面是显示延迟的侦听器日志。
另外,如果我使用下面的语句而不是自动调用Spring Quartz调度器,那么作业将成功激发 请让我知道我做错了什么...
我很难让Grails中的Quartz工作按预期同时运行。这就是我的工作。我已经注释掉了使用Executor插件的代码行,但是当我没有注释掉它们时,我的代码会按预期工作。 就我而言,myService2。doOtherStuff()需要很长时间才能完成,这与下一次触发此作业的时间重叠。我不介意它们是否重叠,这就是我明确添加def concurrent=true的原因,但它不起作用。 我有Quartz
问题内容: 我有一个非常轻量级的作业,应在触发后立即执行,而不是等待一个小时才能完成当前作业。 据我了解,一项 轻量级 任务就是我想要的。它将为该任务创建一个临时执行程序。 我怎样才能使工作成为举重运动员? 问题答案: 试试这个FlyWeightProject插件。它是在Flyweight中运行的Freestyle类型的扩展。