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>
相关推荐
关于spring中quartz的配置
定时任务demo,Java语言,spring整合quartz配置文件实现定时任务
spring注解Quartz定时执行功能
spring+quartz demo,下载后即可运行,很强大哦....
springboot 使用quartz+XML格式处理定时任务 springboot 使用quartz+XML格式处理定时任务 springboot 使用quartz+XML格式处理定时任务 功能描述:https://www.cnblogs.com/personblog/p/14030746.html
Java_Spring与Quartz的整合
本项目来源与网络,本人对项目...直接通过mvn 倒入项目,在Spring-quartz-demo\src\main\webapp\sql 有sql 建立数据库,表 启动tomcat 直接访问http://localhost:8080/Spring-quartz-demo/task/taskList.htm 就可以使用
spring的quartz使用实例,spring的quartz使用实例
spring整合quartz文档
spring和quartz的定时器的启动和停止例子
所需jar如下: spring-beans-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE....quartz-all-2.1.7.jar spring-tx-3.2.4.RELEASE.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar
spring 集成quartz定时任务 用数据库实现quartz的集群
这个是spring 和 quartz的集成,quartz是单独的包,java线程的方式运行,利用自定义Jobfactory来解决spring注入service空指针的问题,简单实例执行main方法即可,很实用
Spring_QuartZDemo
spring集成quartz使用需要的jar包下载。
spring+quartz需要的4个jar包 不需要6个 开始有人上传的6个 其实没这个必要 我来修正 一下
Spring+quartz相关jar包.rar
spring定时任务必须的包和spring配置说明
主要介绍了Spring quartz Job依赖注入使用详解的相关资料,Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入,需要的朋友可以参考下
各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定 用户解锁任务。对于一个典型的MIS系统来说,在每月1号凌晨统计上...