Quartz--Listener

监听器方便在Trigger执行完毕,Trigger执行错误等地方进行监听处理。

下面代码举个SchedulerListener的例子: 在Trigger最后一次执行的时候监听

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
		
	}

其实可以不必实现上述接口(有一堆你不需要的方法要重写), 可以用SchedulerListenerSupport替代,只需要实现需要的方法。


监听注册:

        @Resource
	private Scheduler scheduler;
	@Resource
	private SchedulerTriggerListenerServiceImpl schedulerTriggerListener;
        scheduler.getListenerManager().addSchedulerListener(schedulerTriggerListener);

以上就是一个监听器在Spring的完整集成。


具体很多其他的监听功能看业务需求吧

官方API差不多够用了:



结合我的另一篇文字:http://blog.csdn.net/wenniuwuren/article/details/42004539

就能解决Listener因为服务器关闭或重启Listener失效问题(其实就是重新注册监听器)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值