CN117112175A - 一种动态添加删除的定时任务控制方法、设备及存储介质 - Google Patents

一种动态添加删除的定时任务控制方法、设备及存储介质 Download PDF

Info

Publication number
CN117112175A
CN117112175A CN202311091520.3A CN202311091520A CN117112175A CN 117112175 A CN117112175 A CN 117112175A CN 202311091520 A CN202311091520 A CN 202311091520A CN 117112175 A CN117112175 A CN 117112175A
Authority
CN
China
Prior art keywords
task
timing
timing task
tasks
deletion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311091520.3A
Other languages
English (en)
Inventor
方合浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Defan Information Technology Co ltd
Original Assignee
Shanghai Defan Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Defan Information Technology Co ltd filed Critical Shanghai Defan Information Technology Co ltd
Priority to CN202311091520.3A priority Critical patent/CN117112175A/zh
Publication of CN117112175A publication Critical patent/CN117112175A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种动态添加删除的定时任务控制方法、设备及存储介质,该方法包括以下步骤:项目启动完成后查询所有定时任务;之后根据配置中定时任务开始和结束时间、以及唯一标识,结合ConcurrentHashMap和ThreadPoolTaskScheduler,完成定时任务注册或删除;当到达定时任务调度时间,执行Runner中的自定义实现业务逻辑。与现有技术相比,本发明能够根据实际业务需求灵活调整任务的执行时间和频率,大大方便用户进行定时任务的扩展、调度及监控。

Description

一种动态添加删除的定时任务控制方法、设备及存储介质
技术领域
本发明涉及任务调度技术领域,尤其是涉及一种动态添加删除的定时任务控制方法、设备及存储介质。
背景技术
在项目开发中,经常会遇到定时任务的场景,现有技术主要采用@Scheduled注解的方式,以进行定时任务的开发和调度,@Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。然而使用@Scheduled直接在代码中进行定时任务调度存在以下缺点:
1、缺乏动态性:使用@Scheduled注解方式配置的定时任务在应用启动时会被初始化,并且随着应用的运行而一直存在。如果需要在运行时动态地添加、修改或删除定时任务,就需要重新编译和部署代码。这种静态的方式缺乏动态性,无法根据业务需求灵活地调整定时任务的执行逻辑。
2、代码耦合度高:直接在代码中使用@Scheduled注解,会导致定时任务的逻辑与业务代码耦合在一起,使得代码的可维护性和可扩展性下降。如果需要对定时任务进行修改或扩展,可能需要修改原有的业务代码,增加了代码维护和测试的复杂性。
3、配置混乱:当应用中存在多个定时任务时,通过@Scheduled注解直接在方法上进行配置可能会导致配置信息分散、混乱不清。定时任务的配置信息散落在各个方法中,难以统一管理和维护,容易出现配置错误或冲突的问题。
4、缺乏统一的任务调度策略:使用@Scheduled注解方式配置的定时任务对于不同的任务调度策略(例如固定频率执行、固定延迟执行、Cron表达式等)难以统一管理。每个定时任务的调度策略需要在方法上进行配置,容易造成混乱和不一致。
5、缺乏监控和管理:直接在代码中使用@Scheduled注解实现的定时任务缺乏监控和管理的功能。无法直观地了解定时任务的执行情况、调度状态以及运行日志等信息。在生产环境中,将给故障排查和性能优化带来一定的困难。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种动态添加删除的定时任务控制方法、设备及存储介质,能够根据实际业务需求灵活调整任务的执行时间和频率,方便进行定时任务的扩展、调度及监控。
本发明的目的可以通过以下技术方案来实现:一种动态添加删除的定时任务控制方法,包括以下步骤:
S1、项目启动完成后查询所有定时任务;
S2、根据配置中定时任务开始和结束时间、以及定时任务的唯一标识,结合ConcurrentHashMap和ThreadPoolTaskScheduler,完成定时任务注册或删除;
S3、当到达定时任务调度时间,执行Runner中的自定义实现业务逻辑。
进一步地,所述步骤S1具体是在项目启动时监听ApplicationReadyEvent事件,在项目启动完成后查询定时任务表中的所有定时任务。
进一步地,所述查询定时任务表中所有定时任务的具体过程为:查询所有工作日历根据生效日期变更状态定时任务,根据业务中的开始时间和结束时间,分别组成上线定时任务和下线定时任务。
进一步地,所述步骤S2具体包括以下步骤:
S21、用户创建或删除数据,分别对应生成或删除相应业务定时任务;
S22、若为注册定时任务,则将相应的业务Runner以及定时任务唯一标识存入ConcurrentHashMap中,该ConcurrentHashMap为当前所有的流程,将任务调度时间和Runner注册到ThreadPoolTaskScheduler等待调度;
若为删除定时任务,则根据唯一标识找到相应的定时任务,并将该定时任务从ConcurrentHashMap和ThreadPoolTaskScheduler删除。
进一步地,所述步骤S22中若为注册定时任务,则在业务中新建一个工作日历并给定生效日期,并向任务调度中心注册两个定时任务,即向ConcurrentHashMap中存储数据和向ThreadPoolTaskSchedule中注册定时任务;
若为删除定时任务,则根据当前工作日历实例,将任务调度中心中相应的定时任务删除。
进一步地,所述步骤S22中注册定时任务的具体过程为:针对查询出来的所有有效数据进行定时任务注册,向ConcurrentHashMap存储定时任务队列数据,以及在ThreadPoolTaskSchedule注册业务数据中开始时间的上线定时任务和结束时间的下线定时任务,等待调度。
进一步地,所述步骤S22中删除定时任务的具体过程为:将注册时存储的ConcurrentHashMap内容移除,以及取消ThreadPoolTaskSchedule中注册的开始时间的上线定时任务和结束时间的下线定时任务。
进一步地,所述步骤S3具体是在到达定时任务调度时间,根据不同类型的定时任务,找到相应的Runner、并执行Runner中的自定义实现业务逻辑。
一种动态添加删除的定时任务控制设备,包括处理器,所述处理器与存储器通信连接,所述存储器存储有计算机可读程序,所述处理器执行所述计算机可读程序时实现上述的动态添加删除的定时任务控制方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述动态添加删除的定时任务控制方法的步骤。
与现有技术相比,本发明通过在项目启动完成后查询所有定时任务;之后根据配置中定时任务开始和结束时间、以及唯一标识,结合ConcurrentHashMap和ThreadPoolTaskScheduler,从而完成定时任务注册或删除。由此具有以下优点:
1、灵活性:通过使用ThreadPoolTaskScheduler,能够在运行时动态地添加和删除定时任务,根据实际业务需求灵活调整任务的执行时间和频率。
2、简洁性:使用ThreadPoolTaskScheduler能够避免编写繁琐的定时任务管理代码,提高代码的可读性和维护性。
3、并发安全性:通过使用ConcurrentHashMap来存储任务对象和调度结果,确保了在多线程环境下的并发安全性,避免了潜在的线程安全问题。
4、可扩展性:由于使用了Spring框架的组件,能够方便地进行扩展和定制,例如通过配置文件来管理任务的执行时间和频率,或者使用AOP来添加额外的任务处理逻辑。
5、高效性:ThreadPoolTaskScheduler基于线程池实现,能够高效地执行并管理大量的定时任务,减少资源消耗并提高任务执行的效率。
6、高度可定制化:通过调整ThreadPoolTaskScheduler的配置,能够灵活地设置线程池的大小、线程池的拒绝策略等,以满足不同任务量和性能需求。
7、异步执行:ThreadPoolTaskScheduler基于线程池实现,能够将定时任务的执行放在独立的线程中进行,不会阻塞主线程,提高系统的响应性能。
8、监控和统计:Spring框架提供了丰富的监控和统计功能,使得用户能够轻松地获取定时任务的执行状态、执行时间等信息,方便进行系统性能分析和优化。
9、高可靠性:ThreadPoolTaskScheduler具有异常处理和任务重试的机制,能够在任务执行出现异常时进行处理,保证定时任务的可靠性。
10、Spring生态整合:由于ThreadPoolTaskScheduler是Spring框架的一部分,与其他Spring组件(如Spring Boot、Spring Cloud等)无缝集成,因而能够进一步充分利用Spring生态系统的各种功能和特性,更好地实现定时任务调度控制。
附图说明
图1为本发明的方法流程示意图;
图2为实施例的应用过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种动态添加删除的定时任务控制方法,包括以下步骤:
S1、项目启动完成后查询所有定时任务;
S2、根据配置中定时任务开始和结束时间、以及定时任务的唯一标识,结合ConcurrentHashMap和ThreadPoolTaskScheduler,完成定时任务注册或删除;
S3、当到达定时任务调度时间,执行Runner中的自定义实现业务逻辑。
在具体应用时,项目启动时监听ApplicationReadyEvent事件,在应用启动完成后查询定时任务表中的所有定时任务,再根据配置中的定时任务开始和结束时间以及定时任务的唯一标识来注册相应的事件,主要内容有:
a.用户创建或删除数据,分别对应生成或删除相应业务定时任务;
b.注册定时任务时需调用注册的方法,即将应的业务Runner以及定时任务唯一标识存入ConcurrentHashMap中,该ConcurrentHashMap为当前所有的流程,将任务调度时间和Runner注册到ThreadPoolTaskScheduler等待调度;
c.删除定时任务时需调用取消注册方法,即根据唯一标识找到相应的定时任务、并从ConcurrentHashMap和ThreadPoolTaskScheduler删除;
d.最后在到达任务调度时间执行Runner中的自定义实现业务逻辑。
本实施例应用上述技术方案,如图2所示,在步骤402中,项目启动完成查询所有工作日历根据生效日期变更状态定时任务,根据业务中的开始时间和结束时间分别组成上线定时任务和下线定时任务。
在步骤405中,对402和403中查询出来的所有有效数据进行定时任务注册,向ConcurrentHashMap存储定时任务队列数据,以及在ThreadPoolTaskSchedule注册业务数据中开始时间的上线定时任务和结束时间的下线定时任务,等待调度;对404中的数据操作进行定时任务取消注册,将注册时存储的ConcurrentHashMap内容移除,以及取消ThreadPoolTaskSchedule中注册的开始时间的上线定时任务和结束时间的下线定时任务。
在步骤403中,用户在业务中新建一个工作日历并给定生效日期,这时需要向任务调度中心注册两个定时任务,即向ConcurrentHashMap中存储数据和向ThreadPoolTaskSchedule中注册定时任务,包括在开始时间修改为上线的定时任务、以及在结束时间修改为下线的定时任务。
在步骤404中,用户删除一个工作日历,这时需要根据当前工作日历实例,将任务调度中心中相应的定时任务删除,即将注册时存储的ConcurrentHashMap内容移除,以及取消ThreadPoolTaskSchedule中注册的开始时间的上线定时任务和结束时间的下线定时任务。
在步骤406中,根据不同类型的定时任务找到相应的Runner执行步骤407中Runner的步骤。
在步骤407中,根据不同业务场景实现不同的业务,在工作日历场景中只需要修改工作任务的状态。
综上可知,采用本技术方案,能够很好地实现动态添加和删除定时任务控制过程,大大方便用户进行定时任务的扩展、调度及监控。

Claims (10)

1.一种动态添加删除的定时任务控制方法,其特征在于,包括以下步骤:
S1、项目启动完成后查询所有定时任务;
S2、根据配置中定时任务开始和结束时间、以及定时任务的唯一标识,结合ConcurrentHashMap和ThreadPoolTaskScheduler,完成定时任务注册或删除;
S3、当到达定时任务调度时间,执行Runner中的自定义实现业务逻辑。
2.根据权利要求1所述的一种动态添加删除的定时任务控制方法,其特征在于,所述步骤S1具体是在项目启动时监听ApplicationReadyEvent事件,在项目启动完成后查询定时任务表中的所有定时任务。
3.根据权利要求2所述的一种动态添加删除的定时任务控制方法,其特征在于,所述查询定时任务表中所有定时任务的具体过程为:查询所有工作日历根据生效日期变更状态定时任务,根据业务中的开始时间和结束时间,分别组成上线定时任务和下线定时任务。
4.根据权利要求3所述的一种动态添加删除的定时任务控制方法,其特征在于,所述步骤S2具体包括以下步骤:
S21、用户创建或删除数据,分别对应生成或删除相应业务定时任务;
S22、若为注册定时任务,则将相应的业务Runner以及定时任务唯一标识存入ConcurrentHashMap中,该ConcurrentHashMap为当前所有的流程,将任务调度时间和Runner注册到ThreadPoolTaskScheduler等待调度;
若为删除定时任务,则根据唯一标识找到相应的定时任务,并将该定时任务从ConcurrentHashMap和ThreadPoolTaskScheduler删除。
5.根据权利要求4所述的一种动态添加删除的定时任务控制方法,其特征在于,所述步骤S22中若为注册定时任务,则在业务中新建一个工作日历并给定生效日期,并向任务调度中心注册两个定时任务,即向ConcurrentHashMap中存储数据和向ThreadPoolTaskSchedule中注册定时任务;
若为删除定时任务,则根据当前工作日历实例,将任务调度中心中相应的定时任务删除。
6.根据权利要求5所述的一种动态添加删除的定时任务控制方法,其特征在于,所述步骤S22中注册定时任务的具体过程为:针对查询出来的所有有效数据进行定时任务注册,向ConcurrentHashMap存储定时任务队列数据,以及在ThreadPoolTaskSchedule注册业务数据中开始时间的上线定时任务和结束时间的下线定时任务,等待调度。
7.根据权利要求5所述的一种动态添加删除的定时任务控制方法,其特征在于,所述步骤S22中删除定时任务的具体过程为:将注册时存储的ConcurrentHashMap内容移除,以及取消ThreadPoolTaskSchedule中注册的开始时间的上线定时任务和结束时间的下线定时任务。
8.根据权利要求4所述的一种动态添加删除的定时任务控制方法,其特征在于,所述步骤S3具体是在到达定时任务调度时间,根据不同类型的定时任务,找到相应的Runner、并执行Runner中的自定义实现业务逻辑。
9.一种动态添加删除的定时任务控制设备,其特征在于,包括处理器,所述处理器与存储器通信连接,所述存储器存储有计算机可读程序,所述处理器执行所述计算机可读程序时实现如权利要求1~8任一所述的一种动态添加删除的定时任务控制方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1~8任一所述的一种动态添加删除的定时任务控制方法的步骤。
CN202311091520.3A 2023-08-28 2023-08-28 一种动态添加删除的定时任务控制方法、设备及存储介质 Pending CN117112175A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311091520.3A CN117112175A (zh) 2023-08-28 2023-08-28 一种动态添加删除的定时任务控制方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311091520.3A CN117112175A (zh) 2023-08-28 2023-08-28 一种动态添加删除的定时任务控制方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117112175A true CN117112175A (zh) 2023-11-24

Family

ID=88799697

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311091520.3A Pending CN117112175A (zh) 2023-08-28 2023-08-28 一种动态添加删除的定时任务控制方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117112175A (zh)

Similar Documents

Publication Publication Date Title
US8938421B2 (en) Method and a system for synchronizing data
US7779298B2 (en) Distributed job manager recovery
US8832173B2 (en) System and method of multithreaded processing across multiple servers
WO2018095298A1 (zh) 一种信息处理方法、设备和计算机存储介质
CN107148617B (zh) 日志协调存储组的自动配置
US20100333094A1 (en) Job-processing nodes synchronizing job databases
CN103197969A (zh) 一种分布式定时任务控制装置及方法
US8538793B2 (en) System and method for managing real-time batch workflows
CN105719126B (zh) 一种基于生命周期模型的互联网大数据任务调度的系统及方法
CN102637214A (zh) 基于数据库服务间的通用数据同步方法及其系统
CN110019469B (zh) 分布式数据库数据处理方法、装置、存储介质及电子装置
CN111400011B (zh) 一种实时任务调度方法、系统、设备及可读存储介质
US10346262B2 (en) Job management apparatus, job management method and computer readable medium to generate and execute a retry job when an error occurs during a job step
US20210081358A1 (en) Background dataset maintenance
CN102663543A (zh) 一种用于企业数据统一平台的调度系统
WO2009089746A1 (fr) Procédé, dispositif et système de réalisation d'une tâche dans un environnement de grappes
CN104536819A (zh) 基于web服务的任务调度方法
CN108399095B (zh) 支持动态管理定时任务的方法、系统、设备和存储介质
CN106874343B (zh) 一种时序数据库的数据删除方法及系统
CN112035230A (zh) 一种任务调度文件生成方法、装置及存储介质
CN107544844A (zh) 一种提升Spark运行效能的方法及装置
JP2006338197A (ja) トランザクション制御プログラム、トランザクション制御方法及びトランザクション処理システム
CN113821322A (zh) 一种松耦合的分布式工作流协调系统和方法
CN105446812A (zh) 一种多任务调度配置方法
Pufahl et al. Flexible batch configuration in business processes based on events

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination