监听器方便在Trigger执行完毕,Trigger执行错误等地方进行监听处理。
下面代码举个SchedulerListener的例子: 在Trigger最后一次执行的时候监听
<span style="font-family:Microsoft YaHei;font-size:18px;">import javax.annotation.Resource; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerListener; import org.quartz.Trigger; import org.quartz.TriggerKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; /** * * @ClassName: SchedulerTriggerListener * @Description: Trigger监听器 * @author zhuyb * @date 2014-12-15 下午7:39:28 * */ @Service("schedulerTriggerListenerService") public class SchedulerTriggerListenerServiceImpl implements SchedulerListener { private static Logger logger = LoggerFactory.getLogger(SchedulerTriggerListenerServiceImpl.class); @Resource private SchedulerTriggersService schedulerTriggersService; @Resource private Scheduler scheduler; @Override public void jobScheduled(Trigger trigger) { // TODO Auto-generated method stub } @Override public void jobUnscheduled(TriggerKey triggerKey) { // TODO Auto-generated method stub } /** * * @Title: triggerFinalized * @Description: 轮询删除已被Quartz删除的内容 * @param @param trigger * @author zhuyb * @throws */ @Override public void triggerFinalized(Trigger trigger) { try { if (trigger.getNextFireTime() == null) { logger.info("Name="+trigger.getKey().getName()+ ", Group=" + trigger.getKey().getGroup()); int i = schedulerTriggersService.deleteByNotExistInTriggers(); logger.info("删除行数:" + i); } } catch (Exception e) { logger.error("监听器错误:",e); } } @Override public void triggerPaused(TriggerKey triggerKey) { } @Override public void triggersPaused(String triggerGroup) { // TODO Auto-generated method stub } @Override public void triggerResumed(TriggerKey triggerKey) { // TODO Auto-generated method stub } @Override public void triggersResumed(String triggerGroup) { // TODO Auto-generated method stub } @Override public void jobAdded(JobDetail jobDetail) { // TODO Auto-generated method stub } @Override public void jobDeleted(JobKey jobKey) { } @Override public void jobPaused(JobKey jobKey) { // TODO Auto-generated method stub } @Override public void jobsPaused(String jobGroup) { // TODO Auto-generated method stub } @Override public void jobResumed(JobKey jobKey) { // TODO Auto-generated method stub } @Override public void jobsResumed(String jobGroup) { // TODO Auto-generated method stub } @Override public void schedulerError(String msg, SchedulerException cause) { // TODO Auto-generated method stub } @Override public void schedulerInStandbyMode() { // TODO Auto-generated method stub } @Override public void schedulerStarted() { } @Override public void schedulerStarting() { } @Override public void schedulerShutdown() { // TODO Auto-generated method stub } @Override public void schedulerShuttingdown() { } @Override public void schedulingDataCleared() { // TODO Auto-generated method stub } </span>
其实可以不必实现上述接口(有一堆你不需要的方法要重写), 可以用SchedulerListenerSupport替代,只需要实现需要的方法。
监听注册:
@Resource private Scheduler scheduler; @Resource private SchedulerTriggerListenerServiceImpl schedulerTriggerListener;
scheduler.getListenerManager().addSchedulerListener(schedulerTriggerListener);
以上就是一个监听器在Spring的完整集成。
具体很多其他的监听功能看业务需求吧
官方API差不多够用了:
时间: 2024-10-08 21:55:15