我使用Spring 3.0和Quartz 1.6 JDBC Job Store进行作业调度。我希望在触发器失效时生成电子邮件警报。如何在Spring Quartz中配置Trigger misfire事件监听器?
答案 0 :(得分:4)
1)使用triggerMisfired方法中的代码创建一个触发器监听器:
package foo;
import org.quartz.JobExecutionContext;
import org.quartz.Trigger;
import org.quartz.TriggerListener;
import org.quartz.Trigger.CompletedExecutionInstruction;
public class MyTriggerListener implements TriggerListener {
private String name;
public MyTriggerListener(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void triggerComplete(Trigger trigger, JobExecutionContext context,
CompletedExecutionInstruction triggerInstructionCode) {
}
public void triggerFired(Trigger trigger, JobExecutionContext context) {
}
public void triggerMisfired(Trigger trigger) {
// here goes your code for sending email
}
public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) {
return false;
}
}
还可以选择扩展TriggerListenerSupport并仅覆盖triggerMisfired方法:
public class MyTriggerListener extends TriggerListenerSupport {
private String name;
public MyOtherTriggerListener(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void triggerMisfired(Trigger trigger, JobExecutionContext context) {
// do something with the event
}
}
2)将监听器bean添加到spring配置:
<bean id="triggerListener"
class="foo.MyTriggerListener">
</bean>
并将侦听器bean与任何其他属性(如触发器等)一起放在SchedulerFactoryBean中。
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
.....
<property name="globalTriggerListeners">
<list>
<ref bean="triggerListener" />
</list>
</property>
...
</bean>