在我的项目中,我正在创建一个立即 SimpleTrigger 来调用虚拟作业(执行持续超过 30 秒的操作)。我已将失火策略设置为 MISFIRE_INSTRUCTION_FIRE_NOW 并且作业请求恢复标志也设置为 true。
作业启动后(Quartz DB 存储中的状态从 READY 转换为 RUNNING),我故意反弹(重新启动)整个系统,这会中断正在运行的作业。当系统回到活动状态时,我看到中断的作业根本不会重新启动。
在我们的生产系统中,这会造成严重伤害,因为任何软件更新都会无意中最终中断该实例正在运行的作业,并且这些作业根本不会再次启动(一项关键的一次性作业将未完成,从而在即将到来的系统中造成不良的连锁反应)工作)。从我们的角度来看,这是非常不受欢迎的。
我想要的是被中断的作业在系统再次备份后也会触发(本质上相同的行为是触发计划时间是在系统停机期间并且策略是 MISFIRE_INSTRUCTION_FIRE_NOW)。这里有解决方法吗?
我编写了这个方法来从 Quartz JDBC 中删除作业
public boolean removeJob(String jobName) {
try {
JobKey jobKey = JobKey.jobKey(jobName);
try {
Scheduler sched = schedulerFactoryBean.getScheduler();
logger.info("RESULT: " + sched.deleteJob(jobKey));
} catch (Exception e) {
throw new RuntimeException(e);
}
return true;
} catch (Exception ex) {
logger.error(ex.getMessage());
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
deleteJob总是会回来false。因此该作业不会从 mysql 的 JDBC 表中删除。我究竟做错了什么。我只想从调度程序中完全删除此作业
我有一堂课,我在其中执行一些活动,我想创建一个作业来自动处理此操作,例如每 x 分钟安排一次。我正在使用 Quartz,这个类实现了 Job,在我的驱动程序类中,我正在创建我的 jobdetail、调度程序和触发器,然后启动它。但是,该作业尚未执行,日志信息:
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Run Code Online (Sandbox Code Playgroud)
我的驱动程序类中调度程序的代码:
try {
JobDetail job = JobBuilder.newJob(TestMkFPMJob.class).withIdentity("TestMkFPMJob").build();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(Integer.parseInt(strTimeSched)).repeatForever()).build();
SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler sch = schFactory.getScheduler();
sch.start();
sch.scheduleJob(job, trigger);
}
catch (SchedulerException e)
{
e.printStackTrace();
System.out.println("Scheduler Error");
}
Run Code Online (Sandbox Code Playgroud)
“TestMkFPMJob”是处理我的操作的作业类,并且 strTimeSched 已被获取并设置为从以下位置获取的 120
我一直在寻找类似的问题,但似乎找不到任何前进的提示,感激不尽。请注意,这是我第一次使用 Quartz/Job 调度。
我需要做一个cron工作,在unix服务器上每40分钟运行一次java程序.考虑到:1)它应该从8点30分到12点30分,从星期一到星期五从14点到18点2)考虑假期.
我已经阅读了很多关于它的信息,发现这个*/30 8..13,14..19**1..5是最接近的解决方案.我想知道crontab是否可以做我想要的,如果不是,Quartz能够做到这一点吗?
谢谢你的帮助
我在Quartz.NET中使用IJobListener来审核所有工作成功/失败.当作业失败时,我希望将异常带入IJobListener,以便也可以存储异常以供以后分析.
目前我的工作听众是这样的:
public virtual void JobWasExecuted(JobExecutionContext context, JobExecutionException x)
{
}
Run Code Online (Sandbox Code Playgroud)
但是,即使作业的Execute方法中的所有事务都包含在带有catch(异常x)的try中,然后我抛出,但是从不填充JobExecutionException的'x'.
有没有一种特殊的方法来实际获取作业监听器的异常?
谢谢
我需要安排一个任务,每天晚上7点在java使用quartz运行.有人能指出如何在java中使用石英调度程序的好教程吗?
我只需要一个使用Quartz的示例项目或一个逐步解释所有内容的好教程.
Scheduler我的应用程序中有一个对象,我Job使用该scheduleJob方法添加了它.
在我的代码中,我立即安排Job了Trigger:
TriggerBuilder.newTrigger().startNow().build();
Run Code Online (Sandbox Code Playgroud)
我的问题是如何判断哪些Job是我的Scheduler?getCurrentlyExecutingJobs到目前为止,只有一种看似不可靠的方法.
如果在build.gradle文件中添加以下内容:
repositories {
maven { url "https://repo.grails.org/grails/repo/"}
}
dependencies {
compile "org.grails.plugins:quartz:1.0.2"
}
Run Code Online (Sandbox Code Playgroud)
这可以让它编译.虽然,跑步
grails create-job MyJob
Run Code Online (Sandbox Code Playgroud)
导致失败.我手动添加grails-app/jobs/MyJob触发器不会触发,调用MyJob.schedule()会导致找不到方法错误.
我使用下面的Javascript API来创建Quartz兼容的UI,为服务器端的石英服务提供cron表达式.
https://github.com/felixruponen/jquery-cron
我们是否有任何API,我们可以使用它将cron表达式转换为Java Script中的人类可读字符串.
谢谢
quartz-scheduler ×10
java ×5
cron ×2
grails ×2
c# ×1
gradle ×1
grails-3.0 ×1
groovy ×1
javascript ×1
jquery ×1
quartz.net ×1
spring ×1
unix ×1