1. 定义job details
public class NotifyJobProcessor extends JobProcessor { private static final Log LOG = LogFactory.getLog(NotifyJobProcessor.class); public NotifyJobProcessor() { } @Override public void execute(JobExecutionContext context) throws JobExecutionException { String jobName = UploadType.NOTIFY.name(); LOG.debug("%s Job is running ......", jobName); Channel channel = getChannelFromContext(context); try { if (channel != null && channel.isWritable()) { UploadHeartbeat heartbeat = new UploadHeartbeat(UploadType.NOTIFY); UploadFunction notifyFunction = new UploadFunction(heartbeat); UploadFrame frame = new UploadFrame(notifyFunction); channel.writeAndFlush(frame); return; } } catch (Exception e) { LOG.error("Send %s Message failed !!!", jobName); e.printStackTrace(); } LOG.info("Channel is not active or null for %s Job, not need run it any more.", jobName); // channel is not active, then disable trigger disableTrigger(jobName); } }
jobprocessor定义:
public abstract class JobProcessor implements Job { private static final Log LOG = LogFactory.getLog(JobProcessor.class); protected Channel getChannelFromContext(JobExecutionContext context) { Channel channel = null; try { Scheduler schedule = context.getScheduler(); SchedulerContext scheduleContext = schedule.getContext(); channel = (Channel) scheduleContext.get("channel"); } catch (SchedulerException e) { LOG.error("get Channel in Job Execution Context failed !!!", e); e.printStackTrace(); } return channel; } protected void disableTrigger(String jobName) { try { LOG.info("Going to remove %s Job", jobName); UploadJobManager.getInstance().unTrigger(jobName); } catch (SchedulerException e) { LOG.error("Untrigger %s Job failed !!!", jobName); e.printStackTrace(); } } }
2. 配置job details
<!-- For times when you need more complex processing, passing data to the scheduled job --> <bean name="notify.job.processor.detail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.eifesun.monitor.upload.uploader.processor.NotifyJobProcessor" /> <property name="durability" value="true" /> </bean>
3.配置job trigger
变量
<bean id="heartbeatSecond" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="upload.setting"/> <property name="targetMethod" value="getSendHeartBeatSecond"/> </bean>
trigger
<bean id="notify.job.processor.trigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> <property name="jobDetail" ref="notify.job.processor.detail" /> <property name="startDelay" value="5" /> <property name="repeatInterval" value="#{heartbeatSecond}" /> </bean>
4.配置job scheduler
<bean id="job.processor.scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="autoStartup" value="false"/> <property name="jobDetails"> <list> <ref bean="notify.job.processor.detail" /> </list> </property> <property name="triggers"> <list> <ref bean="notify.job.processor.trigger" /> </list> </property> </bean>
最后,
如果job中有外部依赖,可以这样配置
<bean name="report.job.processor.detail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.eifesun.monitor.upload.uploader.processor.ReportJobProcessor" /> <property name="jobDataMap"> <map> <entry key="inverterRepo" value-ref="inverter.repo" /> <entry key="deviceRepo" value-ref="device.repo" /> </map> </property> <property name="durability" value="true" /> </bean>
相关推荐
在Quartz的配置中,你需要定义Scheduler、JobDetail、Trigger等元素,这些都可以通过XML配置文件或者使用Spring的`@Configuration`注解来实现。例如,创建一个简单的Job: ```java import org.springframework....
Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,而 Quartz 是一个强大的任务调度库。将它们结合使用,我们可以实现基于 Spring 的应用程序中的定时任务管理。以下是对 ...
Spring 也支持使用 `@Component` 注解来定义 Job 类,以及 `@Configuration` 和 `@EnableScheduling` 来开启任务调度。 4. **Scheduler 配置**:在 Spring 配置中,可以使用 `@Configuration` 类来定义 `...
"springquartz—项目可以直接运行" 这个压缩包中,通常会包含以下部分: 1. **pom.xml**:Maven 项目配置文件,包含了 Spring 和 Quartz 相关依赖。 2. **src/main/java**:源代码目录,可能包含自定义的 Job 类、...
例如,我们可以创建一个实现了`org.quartz.Job`接口的类,并在其中定义任务的行为。然后,使用`@Component`注解将其注册为Spring Bean。 Trigger则是定义任务何时运行的规则。最常见的是CronTrigger,它使用cron...
在Spring Boot应用中引入Quartz,我们需要在`pom.xml`或`build.gradle`文件中添加Quartz的依赖。对于Maven用户,添加如下依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-...
总结,Spring 4集成Quartz 2.2.1涉及的主要步骤包括:引入Quartz依赖、配置SchedulerFactoryBean、定义Job类、创建Trigger以及打包应用。这个过程使得我们可以灵活地在Spring应用中管理和执行定时任务。
Quartz2.2.1是其一个版本,提供了丰富的功能和优化,包括集群支持、灵活的调度策略以及与Spring框架的深度集成。本文将详细介绍如何在Spring环境中使用注解方式配置Quartz。 1. **引入依赖** 在项目中,你需要引入...
你可以创建一个实现了`org.springframework.scheduling.quartz.JobDetailBean`的类来表示Job,并用`org.springframework.scheduling.quartz.CronTriggerBean`来定义Cron表达式,从而控制触发时间。 ```java @Bean ...
本项目名为“schedule-job”,是基于Spring Boot框架与Quartz库构建的分布式任务调度系统,它允许开发者方便地定义、管理和执行定时任务。 【Spring Boot基础知识】 Spring Boot是由Pivotal团队提供的全新框架,其...
4. **配置Quartz**:在Spring的配置文件中,我们需要定义`SchedulerFactoryBean`,设置数据源、job存储以及其它Quartz配置属性。例如,`triggers`和`jobs`可以通过XML配置文件来定义,或者使用`@Configuration`注解...
【Spring + Quartz 实现定时任务】 在Java应用开发中,定时任务是一项常用的功能,用于执行周期性的、计划性的工作,例如数据同步、日志清理、发送邮件等。Spring框架提供了与Quartz库集成的能力,使得我们可以方便...
1. 定义Job接口:Spring Boot中的Job需要实现`org.springframework.batch.core.Job`接口,但是这里我们使用Quartz,所以需要实现`org.quartz.Job`接口。例如: ```java import org.quartz.Job; import org.quartz....
首先,我们需要在项目的`pom.xml`文件中引入Quartz和Spring相关的依赖。Quartz的最新稳定版本通常可以在Maven仓库中找到。例如,你可以添加以下依赖: ```xml <groupId>org.quartz-scheduler <artifactId>quartz...
- `SpringQuartz`项目中的`pom.xml`文件会列出所有依赖,包括Spring和Quartz的相关库。 - 将项目导入MyEclipse后,运行主类启动应用,然后观察任务是否按预期执行。 7. **注意事项**: - 配置Quartz时,确保...
4. **注册Job和Trigger**:在Spring Boot的配置类中,使用`@Configuration`和`@EnableScheduling`注解开启调度功能,并使用`SchedulerFactoryBean`注册Job和Trigger。这样,Quartz将在启动时读取数据库中的配置并...
Spring Quartz提供了声明式配置,可以将作业和触发器定义在XML配置文件或Java配置类中,并且可以通过Spring的依赖注入(DI)来获取和注入所需的bean。 结合这两个知识点,我们可以将动态加载属性文件与Spring ...
- `pom.xml`:项目构建文件,确保依赖了Spring和Quartz库。 通过上述配置和示例,你可以创建一个具备高可用性的Spring Quartz集群,确保任务在任何节点故障时仍能正常运行。记得根据实际项目需求调整配置和代码。
《Spring4与Quartz2整合应用详解》 在企业级应用开发中,任务调度是一项重要的功能,用于执行定时任务,例如数据同步、报表生成等。Spring4和Quartz2是两个常用的开源框架,Spring提供了强大的依赖注入和面向切面...
- **Java配置**:Spring Boot项目中,可以使用@Configuration和@Bean注解来配置Job、Trigger和Scheduler。 3. **API使用** - **定义Job**:通常使用`@Component`注解创建一个Spring Bean,并且实现`org.spring...