gpt4 book ai didi

java - 不同的 Quartz TriggerState 枚举状态代表什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:02 25 4
gpt4 key购买 nike

不同的 Quartz TriggerState 枚举状态代表什么以及如何设置它们?

我有一个用于运行计划作业的 Spring 3.1 Quartz 2.0.1 实用程序。我的工作只重复固定次数。我希望我的 TriggerState 在完成所有作业后进入 COMPLETE。但是,我看到它从 NORMAL 变为 NONE,而且我从未看到 COMPLETE。我找不到太多关于 TriggerState 行为的文档。

相关Java代码:

SchedulerFactory schedFactory = new StdSchedulerFactory();

Scheduler scheduler = = schedFactory.getScheduler();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();

while (System.in.available() == 0) {
// Get trigger state
TriggerState triggerState = scheduler.getTriggerState(triggerKey);
if ((triggerState == TriggerState.COMPLETE)) {
break;
}
// Sleep for 100 msec
Thread.sleep(SCHEDULER_SLEEP_TIME);
}

Spring xml 中的作业配置:

<bean id="mockJobDetail"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="mypackage.MockJob"/>
</bean>

<bean id="simpleMockJobTrigger"
class="org.quartz.impl.triggers.SimpleTriggerImpl" >
<property name="name" value="simpleMockJobTrigger" />
<!-- run every 50 milliseconds and start immediately, run 3 times -->
<property name="repeatInterval" value="50" />
<property name="startTime">
<bean factory-bean="dateFormat" factory-method="parse">
<constructor-arg value="2012-01-01" />
</bean>
</property>
<property name="repeatCount" value="2" />
</bean>

最佳答案

从代码来看,TriggerState 似乎进入了COMPLETE 状态,然后立即从所有跟踪 HashMap 中删除。这就是为什么 scheduler.getTriggerState(triggerKey) 返回 TriggerState.NONE —— 当 triggerKey 对应的触发器不存在时返回此状态.

因此,要检查触发器是否完成,可以这样做:

if ((triggerState == TriggerState.COMPLETE) || (triggerState == TriggerState.NONE)) {
// do stuff }

使用自定义 TriggerListener 在触发器完成时执行某些操作。

关于java - 不同的 Quartz TriggerState 枚举状态代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com