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项目配置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

浅析如何使用xstream实现javaBean与xml互转

《浅析如何使用xstream实现javaBean与xml互转》XStream是一个用于将Java对象与XML之间进行转换的库,它非常简单易用,下面将详细介绍如何使用XStream实现JavaBean与... 目录1. 引入依赖2. 定义 JavaBean3. JavaBean 转 XML4. XML 转 J

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

SpringBoot中配置文件pom.xml的使用详解

《SpringBoot中配置文件pom.xml的使用详解》SpringBoot的pom.xml文件是Maven项目的核心配置文件,用于定义项目的依赖、插件、构建配置等信息,下面小编就来和大家详细介绍一... 目录1. 基本结构2. 关键部分详解2.1 <modelVersion>2.2 项目坐标2.3 <p