[英]Quartz job from a previous Spring Boot test randomly still running
[英]Updating a QuartzJob from the running job itself
spring 引導應用程序中的 QuartzJob 更新在作業未運行時有效( 此處或此處)。 spring 變量spring.quartz.overwrite-existing-jobs: true
已設置。
但是,當從正在運行的作業中執行相同操作時,作業會在無限循環中不斷觸發自身,而不考慮間隔時間(每隔幾毫秒它會再次觸發)。 我什至嘗試在 TriggerListener 中做同樣的事情,但這並沒有改變它。
作為代碼示例,除了上面第二個鏈接中給出的內容之外,我將一無所有:
// retrieve the trigger
Trigger oldTrigger = sched.getTrigger(triggerKey("oldTrigger", "group1");
// obtain a builder that would produce the trigger
TriggerBuilder tb = oldTrigger.getTriggerBuilder();
// update the schedule associated with the builder, and build the new trigger
// (other builder methods could be called, to change the trigger in any desired way)
Trigger newTrigger = tb.withSchedule(simpleSchedule()
.withIntervalInSeconds(10)
.withRepeatCount(10)
.build();
sched.rescheduleJob(oldTrigger.getKey(), newTrigger);
有人從正在運行的工作中嘗試過嗎?
它適用於以下觸發器。 正是 startAt 有所作為。 否則,觸發器會立即再次觸發。
Trigger trigger = newTrigger()
.withIdentity(triggerName, groupname)
.startAt(Date.from(LocalDateTime.now().plusSeconds(intervalInSeconds).atZone(ZoneId.systemDefault()).toInstant()))
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(intervalInSeconds)
.repeatForever()
.withMisfireHandlingInstructionIgnoreMisfires())
.build();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.