监听器方便在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失效问题(其实就是重新注册监听器)。
相关推荐
9. **插件扩展**:Quartz 还提供了许多插件,例如监听器(Listener)、拦截器(Interceptor)等,用于扩展其功能,如监控任务执行情况、增加日志记录等。 在实际项目中,开发者需要理解并掌握以上这些概念和功能,...
3. **MessageListenerContainer**:这是一个容器类,可以管理消息监听器,负责从队列中拉取消息并调用监听器进行处理,支持多种消费者工作模式。 4. **消息转换**:Spring AMQP 支持多种消息转换器,可以将 Java ...
7. **Plugin Support**:Quartz具有丰富的插件系统,如JobStore插件、Listener插件等,用于扩展其功能。例如,MailSenderJobListener可以在Job执行前后发送邮件通知。 8. **API和配置**:Quartz提供简单易用的API,...
<listener-class>org.quartz.listeners.SchedulerContextListener</listener-class> </listener> ``` 并在`destroy()`方法中停止Scheduler: ```java public void destroy() { Scheduler scheduler = ...
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ``` 6. **启动和监控** - 一旦应用部署并启动,Quartz 会按照配置的 Cron 表达式自动执行 Job。你可以...
在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...
在你的主程序或者`ApplicationListener`中,启动并管理调度器: ```java ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); Scheduler scheduler = (Scheduler) ...
5. **监听器(Listener)**:可以监听作业和触发器的生命周期事件,提供日志、监控等功能。 6. **持久化**:Quartz支持数据库持久化,即使在服务器重启后也能恢复之前的状态,保证任务的连续性。 7. **API和工具类...
<listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class> </listener> ``` 此外,还需要配置`quartz.properties`文件来定义Quartz的运行参数,如JobStore的选择、数据库连接等。 综...
6. **监听器(Listener)**:Quartz还允许添加作业监听器和触发器监听器,它们可以在作业执行前后或触发器触发时执行某些操作,提供了一种扩展点。 在你的示例项目中,可能会包含以下关键部分: - `Job`类:定义了...
- **观察者模式**:通过实现Listener接口,如JobListener和TriggerListener,可以监听调度事件,实现实时反馈。 - **策略模式**:Quartz支持多种策略(如SimpleTrigger、CronTrigger)来定义任务触发时间。 2. **...
8. **监听机制**:可以通过监听器(Listener)监控作业和触发器的状态变化,例如任务执行前后进行特定操作。 9. **线程池集成**:Quartz 可以与应用的线程池集成,优化资源利用。 10. **强大的API和文档**:Quartz...
而 Job 和 Trigger 的状态改变则通过 Listener 来监听和通知,这体现了观察者模式。 对于开发者来说,自定义作业(Job)非常简单,只需要实现 Job 接口并重写 execute 方法。而触发器可以通过 TriggerBuilder 创建...
5. **启动Scheduler**:在Spring的`ApplicationListener`或`CommandLineRunner`中调用`Scheduler`的`start()`方法启动调度。 Quartz的强大之处在于其灵活性和可扩展性。你可以为同一个作业定义多个触发器,或者为一...
### quartz开发手册知识点详解 #### 一、Quartz概述与基本概念 - **Quartz**:是一款开源的任务调度框架,可以实现对Java应用程序中的任务进行调度,并且支持定时任务的触发方式,例如简单的重复触发(如每过5分钟...
开发者可能通过自定义Listener或者使用Quartz提供的内置监听器来监控Job的执行情况。 5. **异常处理**:在任务执行过程中,可能会遇到各种异常,如何捕获并处理这些异常,确保任务的稳定性和可靠性,也是监控管理的...
9. **监听器(Listener)**:Quartz允许注册作业监听器和触发器监听器,以便在作业执行前后或触发器触发前后进行额外的操作,如日志记录、状态更新等。 10. **错误处理**:Quartz支持捕获和处理作业执行时的异常,...
- **QRTZ_JOB_LISTENERS**: 存储有关已配置的JobListener的信息,包括JOB_NAME、JOB_GROUP和JOB_LISTENER等。 - **QRTZ_TRIGGER_LISTENERS**: 存储已配置的TriggerListener的信息。 - **QRTZ_FIRED_TRIGGERS**: 存储...
Quartz 是一个强大的开源作业调度框架,常被用于构建企业级的应用程序,提供精确和可扩展的定时任务功能。在Spring Boot中集成Quartz,我们可以方便地创建和管理定时任务,使得应用程序能够按照预设的时间间隔执行...
6. **监听器(Listener)**:Quartz允许添加各种监听器,如JobListener、TriggerListener和SchedulerListener,以便在特定事件发生时接收通知,如作业开始、结束或触发器触发。 在使用Quartz时,开发者通常会遵循...