spring boot 整合 Quartz

springboot quartz任务信息持久化storeDurably详解 在将JobDetails信息持久化到数据库的时候有一个属性storeDurably,如果设置为true则无论与其关联的Trigger是否存在其都会一直存在,否则只要相关联的trigger删除掉了其会自动删除掉; 1.看下源码注解 /** * Whether or not the <code>Job</code> should remain stored after it is * orphaned (no <code>{@link Trigger 阅读详情

1.配置类

package com.zorasoft.workstack.web.configuration;

import com.zorasoft.workstack.web.infrastructures.schedulings.BillingStatisticsCurrentMonthJob;
import com.zorasoft.workstack.web.infrastructures.schedulings.BillingStatisticsLastMonthJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 定时任务配置文件
 *@Author TangYinJian
 *@Date 2019-06-28 12:13:14
 *@Version 1.0
 */
@Configuration
public class QuartzConfigration {

    public static String JOB_GROUP = " BILLING_STATISTICS_GROUP";

    public enum JOBTYPE{
        CURRENTMONTHCODE("统计当月账单", "STATISTICS-CURRENT-MONTH"),
        LASTMONTHCODE("统计上月账单", "STATISTICS-LAST-MONTH")
        ;

        private String value;
        private String name;

        JOBTYPE(String name, String value) {
            this.value = value;
            this.name = name;
        }

        public String getValue() {
            return value;
        }

        public String getName() {
            return name;
        }
    }

    @Bean
    public JobDetail billingStatisticsCurrentMonthJobDetail() {
        return JobBuilder.newJob(BillingStatisticsCurrentMonthJob.class)                         // 填写执行任务类
                .withIdentity(JOBTYPE.CURRENTMONTHCODE.getValue(), JOB_GROUP)       // 填写执行任务的name和group,多个job group可以相同,name不能相同
                .storeDurably()
                .build();
    }

    @Bean
    public Trigger billingStatisticsCurrentMonthJobTrigger(JobDetail billingStatisticsCurrentMonthJobDetail) {
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 21 * * ?"); // 1-10日每天晚上9点
        //CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 12 9 1-30 * ?");//测试用
        return TriggerBuilder.newTrigger().forJob(billingStatisticsCurrentMonthJobDetail)   // 要执行的job
                .withIdentity(JOBTYPE.CURRENTMONTHCODE.getValue())                      // 要执行的job name
                .withSchedule(scheduleBuilder)
                .build();
    }


    @Bean
    public JobDetail billingStatisticsLastMonthJobDetail() {
        return JobBuilder.newJob(BillingStatisticsLastMonthJob.class)                         // 填写执行任务类
            .withIdentity(JOBTYPE.LASTMONTHCODE.getValue(), JOB_GROUP)       // 填写执行任务的name和group,多个job group可以相同,name不能相同
            .storeDurably()
            .build();
    }

    @Bean
    public Trigger billingStatisticsLastMonthJobTrigger(JobDetail billingStatisticsLastMonthJobDetail) {
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 21 1-10 * ?"); // 每天晚上九点执行
        //CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 36 15 1-10 * ?");//测试用
        return TriggerBuilder.newTrigger().forJob(billingStatisticsLastMonthJobDetail)   // 要执行的job
            .withIdentity(JOBTYPE.LASTMONTHCODE.getValue())                      // 要执行的job name
            .withSchedule(scheduleBuilder)
            .build();
    }

}
 

2.业务类

package com.zorasoft.workstack.web.infrastructures.schedulings;

import com.zorasoft.workstack.web.domains.services.consumptionBillDetailsService.ConsumptionBillDetailsService;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @ClassName BillingStatisticsCurrentMonthJob
 * @Description 根据计费日志统计每月的账单
 * 1.定时(暂定每晚9点执行)查询所有套餐绑定企业,当月10号前根据每个企业统计上个月的所有费用,然后入库到账单表,如果已缴费则不统计;
 * 2.定时(暂定每晚9点执行)查询所有套餐绑定企业,根据每个企业统计当月的所有费用,然后入库到账单表。
 * @Author TangYinJian
 * @Date 2019-06-28 12:13:14
 * @Version 1.0
 **/
@Component
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class BillingStatisticsCurrentMonthJob extends QuartzJobBean {

    private final static Logger logger = LoggerFactory.getLogger(BillingStatisticsCurrentMonthJob.class);

    @Autowired
    private ConsumptionBillDetailsService consumptionBillDetailsService;

    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        try {
            this.consumptionBillDetailsService.billingStatisticsCurrentMonth();
        } catch (Exception e) {
            logger.error(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+":************** 当月账单统计失败*******************");
            logger.error(e.getMessage(), e);
        }
    }

}
 

Spring boot整合quartz方法 然后,定时任务继承TaskJob,并实现其方法。 阅读详情

相关推荐

Spring Boot 2.0与Quartz的整合实践

简介:本文介绍了如何在Spring Boot 2.0项目中整合强大的作业调度框架Quartz,阐述了整合后带来的开发流程简化和效率提升。首先,简要概述了Spring Boot 2.0的主要改进特性,并指出整合Quartz的优势。接着,详细描述了整合Quartz所需的步骤,包括添加依赖、创建Job类、定义JobDetail和Trigger,以及通过注解激活定时任务。最后,总结了这种整合方式如何让开发者专注于业务逻辑而非底层调度配置。

weixin_42607969的博客 1021

拾荒日记(二)SpringBoot整合QuartZ 和SpringTask定时器

拾荒日记(二)SpringBoot整合QuartZ 和SpringTask定时器

qq_44914083的博客 391

NVIDIA DGX Spark 开发环境深度配置与优化指南

定期系统维护每月执行一次完整的系统更新监控存储空间使用情况,及时清理临时文件定期检查硬件健康状况开发习惯优化使用tmux或screen管理长时间运行的任务配置自动化测试和代码质量检查建立完善的项目文档体系性能调优周期每月重新评估和调整系统参数根据工作负载特点优化容器配置持续监控和记录性能指标DGX Spark作为一个强大的AI开发平台,其真正的价值需要通过精细的环境配置和优化才能充分发挥。本文提供的配置方案和建议均基于实际生产环境经验,旨在帮助开发者构建稳定、高效、可维护的开发环境。

time_days的博客 3684

定时任务之Springboot整合Quartz详解

Springboot整合Quartz详解

qq_45087487的博客 1万+

树莓派5首次开机保姆级教程(无显示器通过VNC连接树莓派桌面)

选择 Interface Options > VNC > Yes 启用服务。2.在Windows电脑上安装VNC软件。重启树莓派:sudo reboot。3.使用VNC远程访问树莓派桌面。

qq_34184505的博客 2349

避坑指南:STM32F4的ADC采样FSR传感器,如何稳定读数并校准压力值?

本文详细解析了STM32F4的ADC采样FSR薄膜压力传感器时遇到的读数不稳定和非线性校准问题,提供了从硬件配置到软件滤波的完整解决方案。通过优化ADC设置、改进滤波算法和实施分段线性校准,帮助工程师实现高精度压力测量,特别适用于智能手套和医疗监测等应用场景。

weixin_28675839的博客 273

SpringBoot——Quartz 定时任务

⑦、W:该字符只能出现在日期域中,表示离该日期最近的工作日,例如 15W:表示离该月15号最近的工作日,如果15号是星期六则匹配星期五 14号。L在日期字段表示月份的最后一天,如一月的31,二月的28等,如果在星期域中表示星期六(7),但是如果L出现在星期字段里,而且前面有一个数值 X,则表示这个月的最后 X 天,例如:6L表示该月的最后星期五;⑤、斜杠(/):x/y 表示一个等步长序列,x为起始值,y为增量步长值,例如秒中使用 0/2 表示从0秒开始,没过2秒执行一次。如6#3:表示当月的第三个星期五。

程序猿进阶 6470

ANSYS HFSS 中的相控天线阵列仿真方法

相控天线阵列系统广泛使用,从国防雷达应用到商业 5G 应用。设计这些天线阵列涉及复杂的数学运算,需要全波仿真。Ansys HFSS 全场 3D 电磁仿真软件可以在合理的时间内以较低的计算成本仿真复杂的相控阵天线系统,同时考虑复杂激励、环境(即附近的天线)和平台对其性能的影响。本博客介绍了可用于有效仿真相控天线阵列的不同方法。以下是不同仿真方法的简要概述,视频链接中提供了完整的演示。ANSYS HFSS 提供 4 种不同的相控天线阵列仿真方法:1) 晶胞-无限阵列。

jkh920184196的博客 4250

springBoot整合quartz定时任务

Spring Boot整合Quartz的定时任务技术可以应用于许多不同的场景,帮助我们实现定时执行任务、数据清理、缓存刷新、邮件发送、数据备份、系统监控与报警、数据分析和报表生成等功能。4 TriggerBuilder.newTrigger().forJob制定的是具体明细的方法名,不要忘了加括号,当然不加编译也会报错。创建quartz定时任务配置类,在该类里面有两个地方需要处理,分别是任务明细的构造和触发器的构造。1 工作(Job):用于定义具体执行的工作,通常写业务处理的地方。

见证自己学习,成长的记录 1836

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 716

PCL 快速均匀下采样

快速均匀下采样 是一种点云降采样技术,通过设置采样步长来实现等距降采样,从而减少点的数量。用户可以通过指定步长,选择每隔一定数量的点采样一个点,这样可以在保持点云几何特性的同时,显著减少点的数量。

纵马踏花向自由 870

Spring Boot整合Quartz框架

Spring Boot整合Quartz框架

小何的博客 1214

10、进化动力学谱分析中的开放性问题

本文探讨了进化动力学谱分析中的若干开放性问题,重点围绕进化算法的性能与设计理论展开。文章首先介绍了规范模型及其线性动力学特性,随后深入分析了在实际应用中偏离理想情况的两个关键因素:有限种群和双亲重组。在此基础上提出了三个核心开放性问题:寻找最优传输矩阵以实现全局最优解的高效搜索、无限与有限种群模型谱之间的关系、以及卡林定理在多遗传算子下的推广可能性。通过谱条件、快速混合性与首次命中时间的关系分析,文章进一步讨论了全局吸引与快速收敛的理论基础,并提出了未来的研究方向,包括理论深化、实验拓展与跨学科融合,旨在为

cuda7parallel的博客 80

Spring Boot 整合 Quartz

Spring Boot 整合 Quartz

yangminlei的专栏 464

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(二)(附源码)

这篇文章我们将继续实现曲线射击与两种不需要实体子弹的射击方式 源码在文章末尾。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5060

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Boot整合Quartz教程

Spring Boot整合Quartz教程 项目介绍 Spring Boot整合Quartz项目是一个基于Spring Boot框架的任务调度系统,利用Quartz开源任务调度库实现定时任务的管理和执行。Quartz是一个功能强大的开源任务调度框架,广泛应用于需要定时执行任务的系统中。 项目快速启动 环境准备 JDK 1.8或更高版本 Maven 3.x IntelliJ IDEA或Eclips...

gitblog_00301的博客 532

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring Boot整合Quartz定时任务框架

简单的 trigger 触发时间:通过 Quartz 提供一个方法来完成简单的重复调用 cron。// 3.创建Scheduled对象,在什么时候做什么事?Trigger:按照 Cron 的表达式来给定触发的时间。@description: Quartz介绍Job。@description: Quartz的配置类。// 1、创建Job对象:你要做什么事?//关联 JobDetail 对象。//关联我们自己的 Job 类。//该参数表示一个执行的毫秒数。2、创建trigger。

2401_87194382的博客 1714

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: RSA非对称加密算法(表单提交时,前端js加密,后端java解密)
下一篇: element ui 自动关闭弹框
tyjlearning
博客等级 码龄11年 24粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值