2014-11-06 125 views
2

我正在使用Spring 3.0和Quartz 1.6 JDBC Job Store進行作業調度。我想在觸發器發生故障時生成電子郵件警報。在Quartz中如何配置觸發器失火事件監聽器?Spring 3.1和Quartz中的作業監聽器和觸發器監聽器

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方法的替代:

回答

1

1)與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 id="triggerListener" 
      class="foo.MyTriggerListener"> 
    </bean> 

an d將通過SchedulerFactoryBean內的監聽器bean與像我明白延長TriggerListener觸發器等

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    ..... 
    <property name="globalTriggerListeners"> 
     <list> 
     <ref bean="triggerListener" /> 
     </list> 
    </property> 
    ... 

    </bean> 
+0

任何其他屬性一起,但我想註冊聽衆調度尚不清楚。如果我使用普通石英,我相信這是一條路。但是在使用Spring-Quartz的時候,我不需要任何地方的調度器,因爲每一件事都是由Spring管理的,我不需要干涉除觸發器和作業以外的任何事情。我在這裏錯過了一些東西。 – kiran 2014-11-06 10:58:30

+0

嗨kiran,我編輯了包含彈簧配置的答案,對不起,我不清楚這是你的問題。以類似的方式添加監聽器,就像添加作業細節和觸發器一樣。您只需將該bean放入spring-xml中,並從SchedulerFactoryBean的相應屬性中引用它即可。 – Marios 2014-11-06 11:46:44

+0

謝謝,這很好。 – kiran 2014-11-06 12:09:37