欢迎大家给我留言,并提建议。我会根据大家的意见对iquartz进行改进。
通用任务调度框架iquartz提供定时任务的定制化,能够开发出特定的任务并进行调度,如数据交换、数据处理、文件上传下载等各类任务,iquartz采用类似tomcat的class加载机制,通过自定义classloader,实现不同任务的依赖隔离,实现各个任务运行的独立和闭环。iquartz还能够对每个任务的调度执行进行监控,详细记录任务每一次的运行情况,并提供日志接口供用户使用。
1. 搭建框架的环境
1.1 iquartz + tomcat + mysql
iquartz下载:https://github.com/gx4air/iquartz/tree/master/bin
mysql脚本:https://github.com/gx4air/iquartz/tree/master/docs
mysql数据库新建数据库iqrtz,并将iqrtz.sql导入
1.2 IDE+ plugin.jar
IDE:eclipse 或idea
plugin.jar下载:https://github.com/gx4air/iquartz/tree/master/bin/client
2. 开发定制任务
2.1 无状态任务(参数一次性设置,任务运行中不会改变)
package datamining.plugin; import java.util.Map; import org.apache.log4j.Logger; import com.tech.dawn.iquartz.plugin.Plugin; import com.tech.dawn.iquartz.plugin.PluginResult; public class KMeansPlugin implements Plugin { private Logger logger = Logger.getLogger(KMeansPlugin.class); @Override public PluginResult doPlug(Map<String, String> arg0) throws Throwable { logger.info("从数据库查数据"); logger.info("数据分析"); logger.info("数据结束,返回任务结果"); PluginResult pr = new PluginResult(); pr.setResulst(true); return pr; } }
2.2 有状态任务(任务运行前设定的参数可能随着任务的不断运行而有规律的改变)
package data.plugin; import java.sql.Connection; import java.sql.DriverManager; import java.util.Map; import org.apache.log4j.Logger; import com.tech.dawn.iquartz.plugin.Plugin; import com.tech.dawn.iquartz.plugin.PluginResult; public class DataMigrationPlugin implements Plugin { private Logger logger = Logger.getLogger(DataMigrationPlugin.class); @Override public PluginResult doPlug(Map<String, String> params) throws Throwable { String sourceDriver = params.get("sourceDriver"); String sourceUrl = params.get("sourceUrl"); String sourceUser = params.get("sourceUser"); String sourcePassword = params.get("sourcePassword"); String rowIndex = params.get("rowIndex"); logger.info("从数据源取数据,url-->"+sourceUrl); logger.info("sourceDriver-->"+sourceDriver); Class.forName(sourceDriver); Connection conn = DriverManager.getConnection(sourceUrl, sourceUser, sourcePassword); logger.info("数据源connection成功:"+conn); rowIndex = (Integer.parseInt(rowIndex)+1000)+""; params.put("rowIndex", rowIndex); logger.info("new rowIndex:"+rowIndex); logger.info("返回任务结果"); PluginResult pr = new PluginResult(); pr.setParams(params); pr.setResulst(true); return pr; } }
所需依赖正常设置在classpath下
注意:开发的任务必须以xxxPlugin命名。
开发好的xxxPlugin.class通过jar命名打包成xxxPlugin.jar
注意:依赖无需打入包中。
3. 使用iquartz对开发好的任务进行调度
访问/iquartz/index.jsp
4. 对任务的定时器进行监控
5. 查看任务每一次的执行情况
相关推荐
通用任务调度程序是一种重要的软件设计模式,用于自动化执行周期性的任务。在本案例中,我们关注的是使用Quartz.net和微软的外接程序与扩展性技术来实现这一目标。Quartz.net是一个开源的作业调度框架,它允许开发者...
opencron是一款开源的定时任务调度系统,它的核心设计目标是实现真正的通用性。无论是在小型项目还是大型企业环境中,opencron都能灵活应对,为用户提供高效、稳定的定时任务解决方案。其主要特点包括: 1. **广泛...
cpp-GTS,全称为Games Task Scheduler,是一个针对游戏开发者特别设计的轻量级任务调度框架。这个框架的核心目标是提供高效的任务管理和执行机制,以优化游戏开发中的多线程并行处理,提高软件性能。GTS采用了一种被...
本文就μC/OS-II内核的任务管理和内存管理进行基本的介绍,并介绍一个通用的应用软件结构。然后,与之相对应,提供两个不同操作系统下的应用实例。 关键词:嵌入式系统 多任务 编程 引言 嵌入式系统的面向...
总结起来,SmartTimer是一个为STM32单片机量身定制的高效定时器调度器,它通过抽象和封装定时任务管理,降低了裸机编程的复杂性,提高了软件开发的效率。对于那些需要处理复杂定时逻辑的嵌入式项目,SmartTimer无疑...
是一款基于.net core3.0开发的的通用任务管理系统,将任务逻辑和任务调度彻底分离,并可通过Web界面远程监控和管理任务。 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统...
### 操作系统中任务调度的实现 ...在Intel 386架构上实现任务调度涉及到了中断处理、上下文切换等多个方面,通过对TSS的理解和正确使用,可以有效地实现进程间的切换,从而达到高效利用CPU资源的目的。
总的来说,这个项目提供了一个使用C++和图数据结构实现任务调度的实例,对于学习任务调度、图算法和C++编程都有很好的实践价值。通过深入理解和实践这个项目,开发者可以提升解决实际问题的能力,并对软件工程中的...
在《使用HAL库开发STM32(基于F4):系统时间基础及进阶使用》这篇博文中,作者可能会详细解释如何配置HAL库的定时器,以及如何实现上述任务调度器的各个功能。此外,还可能涉及到中断服务程序的编写,以及如何使用...
Apache Mesos是Apache软件基金会的一个开源项目,它为数据中心的操作系统提供了一个通用的资源管理层,能够高效地管理和调度CPU、内存、存储等资源。Mesos的核心设计理念是将集群视为一个单一的资源池,使得上层的...
任务调度问题属于NP完全问题,这意味着问题的复杂度非常高,很难找到一种通用的最优解。传统的智能优化算法,如遗传算法(GA)、蚁群优化(ACO)算法、粒子群优化(PSO)算法和布谷鸟搜索算法(CSA),虽然各有优点,但也...
STM32F750 UCOSII实现任务调度是一个典型的嵌入式系统开发项目,它涉及到微控制器(MCU)的高级应用,包括基于STM32F750的硬件驱动程序开发,以及使用HAL库进行软件抽象。下面将详细讨论这个项目中涉及的关键知识点...
可能包含的组件有:数据源配置、数据集设计、报表设计、定时任务调度等。SpringBoot后端可以提供API接口,允许前端通过调用来获取或更新报表数据,Vue.js前端则负责将这些数据可视化呈现。 在系统设计阶段,需要...
根据提供的文件信息,“Q GDW 11541-2016 电网调度自动化系统软件测试规范(国电企标)”主要关注于电力监控系统的软件测试方面,包括了功能测试和性能测试等内容。下面将从这些关键点出发,深入探讨其背后的详细...
操作系统通用处理器调度演示程序课程设计是一项重要的实践任务,旨在帮助软件工程专业的学生深入理解操作系统的原理,特别是处理器调度这一核心概念。在这个课程设计中,学生需要实现一个模拟环境,能够演示五种不同...
综上所述,这个基于SpringBoot+Vue的企业级智能通用报表调度平台管理系统源码是一个综合性的解决方案,涵盖了后端服务开发、前端用户体验、数据处理、任务调度等多个关键领域,为企业提供了一套完整的报表管理工具。...
特别是可重构模块任务调度问题,涉及到FPGA硬件资源的合理配置和管理,如何实现软件任务和硬件任务的高效协同是关键问题。 3. 软硬件统一多任务模型 提出的软硬件统一多任务模型是为了将软件和硬件任务进行统一管理...
这一算法的实现是为了解决在各种实时系统中对任务调度的多样化需求,旨在通过选择合适的调度策略来提高系统的整体适应性和响应实时任务的能力。 Linux操作系统,作为一种开源的操作系统,广泛应用于嵌入式设备中。...