我使用cronScheduler
设置了misfireInstruction
触发器,如下所示
trigger = newTrigger().withIdentity("autoLockTrigger", "autoLockGroup").startNow() .withSchedule(cronSchedule(croneExpression).withMisfireHandlingInstructionFireAndProceed())
.forJob("autoLockJob","autoLockGroup")
.build();
我的quartz.properties如下所示
org.quartz.scheduler.instanceName =MyScheduler
# Configuring ThreadPool
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1
org.quartz.threadPool.threadPriority = 9
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.dataSource.myDS.jndiURL = jdbc/vikas
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://staging:3307/facao
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password = toor
org.quartz.dataSource.myDS.maxConnections = 30
#org.quartz.jobStore.nonManagedTXDataSource = myDS
#to store data in string format (name-value pair)
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.misfireThreshold = 60000
在我的代码中,如果我在特定时间设置了一些触发器,并且如果服务器处于运行状态,则调度程序正常运行,但如果服务器在调度程序被假定运行的时间内关闭,然后在一段时间后启动,那么调度程序应该运行错误的指令。但在我的情况下,失误的指令并没有一直运行它运行一段时间并不总是如此,所以我的目的没有实现。请给出一些解决方案。提前谢谢。
答案 0 :(得分:0)
我不确定cron触发器但是对于简单的触发器是的, 如果触发器的结束时间已经过去,那么一些提供的失火指令 不管用。有关详细信息,请参阅javadoc代码段。 我猜cron触发器也是如此。 所以,它完全取决于你使用的cron表达式。