Spring4 quartz job xml configuration

2024-02-21 19:38

本文主要是介绍Spring4 quartz job xml configuration,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 1. 定义job details

public class NotifyJobProcessor extends JobProcessor {private static final Log LOG = LogFactory.getLog(NotifyJobProcessor.class);public NotifyJobProcessor() {}@Overridepublic 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 triggerdisableTrigger(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>  

 

 

这篇关于Spring4 quartz job xml configuration的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732852

相关文章

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相

java中XML的使用全过程

《java中XML的使用全过程》:本文主要介绍java中XML的使用全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录什么是XML特点XML作用XML的编写语法基本语法特殊字符编写约束XML的书写格式DTD文档schema文档解析XML的方法​​DOM解析XM