返回顶部
首页 > 资讯 > 后端开发 > JAVA >若依之定时任务
  • 256
分享到

若依之定时任务

javaspringQuartz定时任务若依 2023-08-28 13:08:19 256人浏览 薄情痞子
摘要

若依之定时任务 定时任务实现与介绍 若依中定时任务是使用Quartz实现的,首先需要导入Quartz的依赖 org.quartz-scheduler quartz

若依之定时任务

定时任务实现与介绍

若依中定时任务是使用Quartz实现的,首先需要导入Quartz的依赖

        <dependency>            <groupId>org.quartz-schedulergroupId>            <artifactId>quartzartifactId>            <version>2.3.2version>        dependency>

定时任务逻辑

public class QuartzJobFactory implements Job {    private Logger logger = Logger.getLogger(QuartzJobFactory.class);    @Override    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {        //todo 定时任务逻辑        logger.info("=============定时任务==============");    }}

这里在系统初始化时触发定时任务,这里是添加了@PostConstruct注解,也可以实现InitializingBean接口

@Componentpublic class QuartzService {    private Logger logger = Logger.getLogger(QuartzJobFactory.class);//每5秒执行一次    private static final String CRON_TIME = "*/5 * * * * ?";    private static final String TRIGGER_KEY_NAME = "00000000001";    @PostConstruct    public void taskInit() {        logger.info("系统初始化加载定时任务开始===========");        try {            StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();            Scheduler scheduler = schedulerFactory.getScheduler();            TriggerKey triggerKey = TriggerKey.triggerKey(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP);            JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class).withDescription("quartz测试定制化定时任务").withIdentity(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP).build();            CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(CRON_TIME);            CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();            scheduler.scheduleJob(jobDetail, cronTrigger);            scheduler.start();            logger.info("初始化定时任务加载完成");        } catch (Exception e) {            logger.info("初始化加载定时任务失败===========");            e.printStackTrace();        }    }}

通过上面三步就实现了一个简单的定时任务。接下来我们看看Quartz的核心组件。
Quartz的核心组件主要是Scheduler、Job 、JobDetail、Trigger。

  • Job:用于定义任务具体的逻辑。这里面需要注意的是怎么传入参数、获取参数;

    在这里插入图片描述
  • JobDetail:定义任务详情。包含执行任务的Job、任务的一些身份信息(方便找到Job),传入参数到任务中去;Job key是任务的唯一标识,可以通过Job key找到任务。
public interface JobDetail {        public JobKey geTKEy();        public String getDescription();        public Class<? extends Job> getJobClass();        public JobDataMap getJobDataMap();        public boolean isDurable();        public boolean isPersistJobDataAfterExecution();        public boolean isConcurrentExectionDisallowed();        public boolean requestsRecovery();        public JobBuilder getJobBuilder();}
  • Trigger:触发器,设置Job什么时候执行。Quartz框架默认提供了四种触发器。
触发器作用
SimpleTrigger简单触发器,适用于按指定的时间间隔执行多少次任务的情况
CronTriggerCron触发器,通过Cron表达式来控制任务的执行时间
通过Cron表达式来控制任务的执行时间日期触发器,在给定的时间范围内或指定的星期内以秒、分钟或者小时为周期进行重复的情况
CalendarIntervalTrigger日历触发器,根据一个给定的日历时间进行重复
  • Scheduler:Scheduler调度器用来管理Trigger和Job,并保证Job能在Trigger设置的时间被触发执行

若依中定时任务实现

若依中定时任务主要在quartz模块中。
在这里插入图片描述

若依中定时任务监控页面:
在这里插入图片描述

若依中设计了sys_job:来记录定时任务的信息,sys_job_log:来记录定时任务执行的信息。
在这里插入图片描述
在这里插入图片描述

若依中Job的设计如下,QuartzJobExecution支持并发,QuartzDisallowCOncurrentExceution不支持并发执行。
在这里插入图片描述

在AbstractQuartzJob类中保存了定时任务执行的日志
在这里插入图片描述

当我们创建一个定时任务时,其核心方法是ScheduleUtils类的createScheduleJob方法。
在这里插入图片描述
定时任务的执行,则是在AbstractQuartzJob的实现类中调用JobInvokeUtil的invokeMethod方法,然后通过反射找到要执行的类的方法去执行。
在这里插入图片描述

通过要执行的类的类名TASK_CLASS_NAME、jobId还有jobGroup作为Job的key,后面删除、修改Job的时候需要通过Job key获取Job;在这里插入图片描述
修改的时候除了修改sys_job表中的信息,还需要修改Quartz中Job的信息。而若依中的修改是先把原来的Job删除以后,再创建一个和原来一样得到。
在这里插入图片描述
在这里插入图片描述
项目启动时需要把数据库中定时任务表的记录读取出来,然后根据这些记录还原出定时任务,然后执行,具体逻辑如下:
在这里插入图片描述

参考

  1. Spring Boot Quartz 使用介绍
  2. 若依开源项目
  3. Java中定时任务的6种实现方式,你知道几种?
  4. 使用Quartz实现定时任务(包含管理界面)

来源地址:https://blog.csdn.net/wsb_2526/article/details/129475335

--结束END--

本文标题: 若依之定时任务

本文链接: https://www.lsjlt.com/news/381252.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 若依之定时任务
    若依之定时任务 定时任务实现与介绍 若依中定时任务是使用Quartz实现的,首先需要导入Quartz的依赖 org.quartz-scheduler quartz ...
    99+
    2023-08-28
    java spring Quartz 定时任务 若依
  • python 包之 APScheduler 定时任务
    目录一、安装二、定时执行一次三、间隔执行四、每日定时执行一次五、每几分钟执行一次六、每小时执行一次七、调度器分类一、安装 pip install apscheduler 二、定时执行...
    99+
    2024-04-02
  • SpringBoot任务之定时任务相关知识总结
    01: 异步任务 03: 邮件任务 一、SpringBoot--任务:定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候, 分析一次前一天的日志信息,Spri...
    99+
    2024-04-02
  • Android开发之定时任务(AlarmManager、WorkManager)
    Android 程序的定时任务主要有AlarmManager、WorkManager两种。 一、AlarmManager AlarmManager,又称闹钟,可以设置一次性任务,周期重复任务,定时重复任务。 AlarmManager 通过 ...
    99+
    2023-08-18
    android java 开发语言
  • SpringBoot任务之定时任务的知识点有哪些
    这篇文章主要为大家展示了“SpringBoot任务之定时任务的知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot任务之定时任务的知识点有哪些”这篇文章吧。一、Spri...
    99+
    2023-06-15
  • Java之SpringBoot定时任务案例讲解
    1. SpringBoot--任务:定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候, 分析一次前一天的日志信息,Spring为我们提供了异步执行任务调度的...
    99+
    2024-04-02
  • SpringBoot-定时任务
    在我们实际开发项目的过程中,经常需要定时任务来帮我们做一些事情,例如每隔一小时统计新注册的用户数量、每天凌晨一点进行服务器缓存清理、每周五统计购买会员的用户数量等。SpringBoot在2.0版本之后,提供了非常方便的注解方式来编写定时任务...
    99+
    2014-06-07
    java教程 SpringBoot
  • Java-定时任务
    文章目录 补充:cron表达式基本知识方式一:使用sleep方法方式二:JDK Timer和TimerTask方式三:JDK ScheduledExecutorService方式四: Spri...
    99+
    2023-09-23
    java spring 开发语言 springboot
  • Python定时任务
    在项目中,我们可能遇到有定时任务的需求。其一:定时执行任务。例如每天早上 8 点定时推送早报。其二:每隔一个时间段就执行任务。比如:每隔一个小时提醒自己起来走动走动,避免长时间坐着。今天,我跟大家分享下 Python 定时任务的...
    99+
    2023-01-31
    Python
  • MySQL定时任务
    1、事件概述 在MySQL 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。它可以作为定时任务调度器,取代部分原来只能用操作系统的计划任务才能执行的工作。另外,更值得一提的是,MySQL的事件可以实现每秒钟...
    99+
    2023-08-16
    mysql 数据库 linux
  • oracle如何修改之前的定时任务
    要修改之前的定时任务,可以按照以下步骤进行操作:1. 登录到Oracle数据库中的SYS用户。2. 使用以下语句查找已创建的定时任务...
    99+
    2023-08-31
    oracle
  • python包之APScheduler定时任务怎么实现
    这篇文章主要介绍“python包之APScheduler定时任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python包之APScheduler定时任务怎么实现”文章能帮助大家解决问题。...
    99+
    2023-06-30
  • Node.js定时任务之node-schedule使用详解
    目录Node.js node-schedule使用安装使用开启定时任务取消定时任务node-schedule定时只执行一次任务以下,是官方npm的示例中文解释Node.js node...
    99+
    2022-11-13
    Node.js定时任务 node-schedule使用 Node.js使用node-schedule
  • navicat mysql 定时任务
    navicat  首先新建函数  选择过程 命名为test   新建事件       设置时间  navicat mysql 定时任务原文地址:https://www.cnblogs.com/jxfy/p/13384601.html...
    99+
    2019-09-17
    navicat mysql 定时任务 数据库入门 数据库基础教程 数据库 mysql
  • Java Scheduled定时任务
    开启定时任务步骤流程: 在启动类添加注解;(注意:千万不要忘记!) @EnableScheduling 在具体的方法上添加定时任务注解 @Scheduled(cron = “0 0 */3 * * ”) // 每3个小时触发一次 ...
    99+
    2023-08-20
    java
  • 若依配置教程(九)若依前后端分离版部署到服务器Nginx(Windows版)
    搭建若依环境 要部署到服务器上,首先要在本地运行若依系统 文章目录 搭建若依环境后端部署1.在application.yml中修改后台端口,这里默认是8080。2.在application-druid.yml中修改正式环境数据库。...
    99+
    2023-08-18
    nginx windows 前端
  • 若依微服务框架启动报错
    ruoyi-system模块报错: Invalid bound statement (not found): com.ruoyi.system.mapper.SysConfigMapper.selec...
    99+
    2023-09-13
    微服务 java spring
  • Spring动态管理定时任务之ThreadPoolTaskScheduler解读
    目录Spring动态管理定时任务ThreadPoolTaskScheduler实现思路ThreadPoolTaskScheduler 定时任务实现总结Spring动态管理定时任务Th...
    99+
    2022-12-28
    Spring动态管理定时任务 ThreadPoolTaskScheduler Spring定时任务
  • mysql定时备份任务
    简介 在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份。而Linux的crontab指令则可以帮助我们实现对数据库定时进行备份。首先我们来简单了解crontab指令,如果你会了请跳到下一个内容mysql备份。 本文章的...
    99+
    2019-03-23
    mysql定时备份任务
  • Python实现定时任务
    Python下实现定时任务的方式有很多种方式。下面介绍几种 循环sleep: 这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。...
    99+
    2022-06-04
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作