我在 Spring 项目中创建了两个作业,它们在两个不同的时间运行,彼此独立。
public class JobA extends QuartzJobBean
{
@Override
protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException
{
// my actual work
}
}
和
public class JobB extends QuartzJobBean
{
@Override
protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException
{
// my actual work
}
}
两者在给定时间都运行良好,但我需要提供一些监控功能,通过它我们可以检查作业是否正在运行。
我遇到了JobListener也看过其他资源,但在实现时感到困惑。我不知道如何在 Spring Controller 中使用此监听器,以便我可以在我的 jsp 中监视这两项工作。
更新: 我正在使用 quartz 1.8。如何检查是否有任何工作暂停?有什么方法可以重新启动任何暂停或损坏的作业?
最佳答案
您可以轻松检索您的作业触发状态
quartz 2.x 的示例:
// get the scheduler factory bean from the spring context
Scheduler scheduler = (Scheduler) getApplicationContext().getBean("schedulerFactoryBean");
// get the TriggerKey
TriggerKey triggerKey = TriggerKey.triggerKey("serviceCronTrigger");
// get the state from the triggerKey
TriggerState triggerState = scheduler.getTriggerState(triggerKey);
对于 quartz 1.8
根据 API 文档,Scheduler.getTriggerState(String triggerName, String triggerGroup)
可以告诉您特定触发器的状态,并返回以下常量之一:Trigger.STATE_NORMAL, Trigger .STATE_PAUSED、Trigger.STATE_COMPLETE、Trigger.STATE_ERROR、Trigger.STATE_BLOCKED、Trigger.STATE_NONE
// get the scheduler factory bean from the spring context
Scheduler scheduler = (Scheduler) getApplicationContext().getBean("schedulerFactoryBean");
// get the state
int state = scheduler.getTriggerState(triggerName, triggerGroup);
关于java - Spring:如何从 Controller 监控 Quartz Job?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17446066/