Quartz从不了解到了解一点点

Quartz(1-Job) Quartz快速入门,Job基本方法和常用注解使用介绍 阅读详情
  1. 转载
  2. 什么是Quartz
    1. Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
  3. Quartz能干什么/应用场景
    1. 如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
    2. 网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.
    3. 企业中如每天凌晨2点触发数据同步、发送Email等操作
  4. 同类框架对比
    1. TimeTask TimeTask在Quartz前还是显得过于简单、不完善,不能直接满足开发者的较为复杂的应用场景.
  5. 资源
    1. 官网:http://www.quartz-scheduler.org/
    2. 下载:http://www.quartz-scheduler.org/downloads
    3. maven pom
      1. <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>
    4. 源代码 svn:http://svn.terracotta.org/svn/quartz
    5. 本文章采用的是2.21版本:优快云下载:http://download.youkuaiyun.com/detail/chenweitang123/7636703
    6. 例子Demo:优快云下载:整理完后上传.
  6. 框架分析
    1. 接口
    2. 类图
  7. Quartz中的设计模式
    1. Builder模式
      1. 所有关键组件都有Builder模式来构建  <Builder> 如:JobBuilder、TriggerBuilder
    2. Factory模式
      1. 最终由Scheduler的来进行组合各种组件  <Factory> 如SchedulerFactory
    3. Quartz项目中大量使用组件模式,插件式设计,可插拔,耦合性低,易扩展,开发者可自行定义自己的Job、Trigger等组件
    4. 链式写法,Quartz中大量使用链式写法,与jQuery的写法有几分相似,实现也比较简单,如:
      1.  $(this).addClass("divCurrColor").next(".divContent").css("display","block");  
      2. newTrigger().withIdentity( "trigger3", "group1").startAt( startTime)
                .withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(10)).build();
  8. 框架核心分析
    1. SchedulerFactory    -- 调度程序工厂
      1. StdSchedulerFactory   -- Quartz默认的SchedulerFactory
      2. DirectSchedulerFactory  --   DirectSchedulerFactory是对SchedulerFactory的直接实现,通过它可以直接构建Scheduler、threadpool 等
        1. ThreadExecutor / DefaultThreadExecutor   -- 内部线程操作对象
    2. JobExecutionContext -- JOB上下文,保存着Trigger、 JobDeaitl 等信息,JOB的execute方法传递的参数就是对象的实例
      1. JobExecutionContextImpl
    3. Scheduler    -- 调度器
      1. StdScheduler    -- Quartz默认的Scheduler
      2. RemoteScheduler  -- 带有RMI功能的Scheduler
    4. JOB --任务对象
      1. JobDetail  -- 他是实现轮询的一个的回调类,可将参数封装成JobDataMap对象,Quartz将任务的作业状态保存在JobDetail中.
      2. JobDataMap --  JobDataMap用来报错由JobDetail传递过来的任务实例对象
    5. Trigger
      1. SimpleTrigger <普通的Trigger> --  SimpleScheduleBuilder
      2. CronTrigger  <带Cron Like 表达式的Trigger> -- CronScheduleBuilder
      3. CalendarIntervalTrigger <带日期触发的Trigger> -- CalendarIntervalScheduleBuilder
      4. DailyTimeIntervalTrigger <按天触发的Trigger> -- DailyTimeIntervalScheduleBuilder
    6. ThreadPool  --  为Quartz运行任务时提供了一些线程
      1. SimpleThreadPool  --一个Quartz默认实现的简单线程池,它足够健壮,能够应对大部分常用场景
    7. -----以上是Quartz涉及到的一些关键对象,详细的内容如有机会会在后续的文章中展开!
  9. Quartz类图

    1. 类图中主要分为5块:Factory、Bulider、Scheduler、Trigger、JOB
  10. 思想
    1. [java]  view plain  copy
      1. // 1、工厂模式 构建Scheduler的Factory,其中STD为Quartz默认的Factory  
      2. //    开发者亦可自行实现自己的Factory;Job、Trigger等组件  
      3. SchedulerFactory sf = new StdSchedulerFactory();  
      4.   
      5. // 2、通过SchedulerFactory构建Scheduler对象  
      6. Scheduler sched = sf.getScheduler();  
      7.   
      8. // 3、org.quartz.DateBuilder.evenMinuteDate  -- 通过DateBuilder构建Date  
      9. Date runTime = evenMinuteDate( new Date());  
      10.   
      11. // 4、org.quartz.JobBuilder.newJob <下一分钟> --通过JobBuilder构建Job  
      12. JobDetail job = newJob(HelloJob.class).withIdentity("job1","group1").build();  
      13.   
      14. // 5、通过TriggerBuilder进行构建Trigger  
      15. Trigger trigger = newTrigger().withIdentity("trigger1","group1")  
      16.             .startAt(runTime).build();  
      17.   
      18. // 6、工厂模式,组装各个组件<JOB,Trigger>  
      19. sched.scheduleJob (job, trigger);  
      20.   
      21. // 7、start   
      22. sched.start();  
      23.   
      24. try {  
      25.   Thread.sleep(65L * 1000L);  
      26. } catch (Exception e) {  
      27. }  
      28.   
      29. // 8、通过Scheduler销毁内置的Trigger和Job  
      30. sched.shutdown(true);  
  11. 一句话看懂Quartz
    1.    1、创建调度工厂();    //工厂模式
         2、根据工厂取得调度器实例();   //工厂模式
         3、Builder模式构建子组件<Job,Trigger>  // builder模式, 如JobBuilder、TriggerBuilder、DateBuilder
         4、通过调度器组装子组件   调度器.组装<子组件1, 子组件2... >  //工厂模式
         5、调度器.start(); //工厂模
    2. Hello Quartz / 本文通过一个简单的例子让大家快速了解Quartz,上手,并了解Quartz内的一些关键对象 如 Scheduler、Job、Trigger、JobExecutionContext等对象
      1. 导入Quartz所需的两个jar包 <quartz-2.2.1.jarr、quartz-jobs-2.2.1.jar>
        1. 创建我们自己的Job类 HelloJob,进行简单的输出
        2. [java]  view plain  copy
          1. package org.quartz.examples.examples01;  
          2.   
          3. import java.util.Date;  
          4. import org.slf4j.Logger;  
          5. import org.slf4j.LoggerFactory;  
          6. import org.quartz.Job;  
          7. import org.quartz.JobExecutionContext;  
          8. import org.quartz.JobExecutionException;  
          9.   
          10. /** 
          11.  * hello world Quartz 
          12.  * @author weeks 
          13.  * 
          14.  */  
          15. public class HelloJob implements Job {  
          16.   
          17.     private static Logger _log = LoggerFactory.getLogger(HelloJob .class );  
          18.   
          19.     /** 
          20.      * Job,Job需要一个公有的构造函数,否则Factory无法构建 
          21.      */  
          22.     public HelloJob() {  
          23.     }  
          24.   
          25.     /** 
          26.      * 实现execute方法 
          27.      */  
          28.     public void execute(JobExecutionContext context)  
          29.         throws JobExecutionException {  
          30.         _log.info( "Hello World! - " + new Date());  
          31.     }  
          32.   
          33. }  
        3. 创建我们的Job运行例子,在下一分钟执行我们自己Job
        4. [java]  view plain  copy
          1. package org.quartz.examples.examples01;  
          2.   
          3. import static org.quartz.DateBuilder.evenMinuteDate ;  
          4. import static org.quartz.JobBuilder.newJob ;  
          5. import static org.quartz.TriggerBuilder.newTrigger ;  
          6. import org.quartz.JobDetail;  
          7. import org.quartz.Scheduler;  
          8. import org.quartz.SchedulerFactory;  
          9. import org.quartz.Trigger;  
          10. import org.quartz.impl.StdSchedulerFactory;  
          11. import org.slf4j.Logger;  
          12. import org.slf4j.LoggerFactory;  
          13. import java.util.Date;  
          14.   
          15. /** 
          16.  * 此Demo将演示如何启动和关闭Quartz调度器,以及如何运作 
          17.  * @author weeks 
          18.  * 
          19.  */  
          20. public class SimpleExample {  
          21.   
          22.   public void run() throws Exception {  
          23.     Logger log = LoggerFactory.getLogger(SimpleExample.class);  
          24.   
          25.     log.info("------- Initializing ----------------------");  
          26.   
          27.     // 1、工厂模式 构建Scheduler的Factory,其中STD为Quartz默认的Factory,开发者亦可自行实现自己的Factory;Job、Trigger等组件  
          28.     SchedulerFactory sf = new StdSchedulerFactory();  
          29.     // 2、通过SchedulerFactory获得Scheduler对象  
          30.     Scheduler sched = sf.getScheduler();  
          31.   
          32.     log.info("------- Initialization Complete -----------");  
          33.   
          34.     // 3、org.quartz.DateBuilder.evenMinuteDate <下一分钟>  -- 通过DateBuilder构建Date  
          35.     Date runTime = evenMinuteDate(new Date());  
          36.   
          37.     log.info("------- Scheduling Job  -------------------");  
          38.   
          39.     // 4、org.quartz.JobBuilder.newJob --通过JobBuilder构建Job  
          40.     JobDetail job = newJob(HelloJob.class).withIdentity("job1", "group1").build();  
          41.   
          42.     // 5、通过TriggerBuilder进行构建  
          43.     Trigger trigger = newTrigger().withIdentity("trigger1" , "group1").startAt(runTime ).build();  
          44.   
          45.     // 6、工厂模式,组装各个组件<JOB,Trigger>  
          46.     sched.scheduleJob(job, trigger);  
          47.      
          48.     // [group1.job1] will run at:  
          49.     log.info(job.getKey() + " will run at: " + runTime);  
          50.   
          51.     // 7、start  
          52.     sched.start();  
          53.   
          54.     log.info("------- Started Scheduler -----------------");  
          55.   
          56.     log.info("------- Waiting 65 seconds... -------------");  
          57.     try {  
          58.       // wait 65 seconds to show job  
          59.       Thread.sleep(65L * 1000L);  
          60.       // executing...  
          61.     } catch (Exception e) {  
          62.       //  
          63.     }  
          64.   
          65.     // shut down the scheduler  
          66.     log.info("------- Shutting Down ---------------------");  
          67.     // 8、通过Scheduler销毁内置的Trigger和Job  
          68.     sched.shutdown(true);  
          69.     log.info("------- Shutdown Complete -----------------");  
          70.   }  
          71.   
          72.   public static void main(String[] args) throws Exception {  
          73.   
          74.     SimpleExample example = new SimpleExample();  
          75.     example.run();  
          76.   
          77.   }  
          78.   
          79. }  
      2. 让我们来看看上面的代码究竟做了些什么:
        1. 创建一个Quartz Job类,必须实现 org.quartz.Job ,这个接口只有一个你要实现的方法,execute方法,其中execute的接口定义如下  
          1.   void execute(JobExecutionContext  context)  throws JobExecutionException;
          2.   当Quartz调度器到约定的时间,它就会生成一个Job的实例,所以你实现Job接口 必须提供一个公有函数,否则会抛出异常,并调用execute方法.其中调度器只管执行,而不关心结果,除非抛出JobExecutionException异常.
          3.  JobExecutionContext 中封装有Quartz运行所需要的所有信息,可以参见下面具体的代码片段.
        2. 其中涉及到的Scheduler、Job、Trigger 3个关键对象  (后续会专门介绍这3个对象)
          1. 其中Scheduler调度器对象,它的方法有start()、shutdown()等方法,负责管理整个调度作业.
          2. Job 又与几个对象有关 Job、JobDetail、JobDataMap
            1. 通过类图来看他们之间的关系

            2. 通过类图可以很明显的看出由JobExecutionContext来组装各个子组件,我们看看JobExecutionContextImpl的源代码,它保存着所有上下文信息
            3. [java]  view plain  copy
              1. private transient Scheduler scheduler ;  
              2.   
              3. private Trigger trigger;  
              4.   
              5. private JobDetail jobDetail;  
              6.   
              7. private JobDataMap jobDataMap;  
              8.   
              9. private transient Job job;  
              10.   
              11. private Calendar calendar;  
              12.   
              13. private boolean recovering = false;  
              14.   
              15. private int numRefires = 0;  
              16.   
              17. private Date fireTime;  
              18.   
              19. private Date scheduledFireTime;  
              20.   
              21. private Date prevFireTime;  
              22.   
              23. private Date nextFireTime;  
              24.   
              25. private long jobRunTime = -1;  
              26.   
              27. private Object result;  
              28.   
              29. private HashMap<Object, Object> data=new HashMap<Object, Object>();  
            4. 关于JobDetail
              1. JobDetail不存储具体的实例,但它允许你定义一个实例,JobDetail 又指向JobDataMap
              2. JobDetail持有Job的详细信息,如它所属的组,名称等信息
            5. 关于JobDataMap
              1. JobDataMap保存着任务实例的对象,并保持着他们状态信息,它是Map接口的实现,即你可以往里面put和get一些你想存储和获取的信息.
          3. 关于Trigger
            1. 即根据具体约定的触发器,具体的如:SimpleTrigger、CronTrigger 等
quartz在集群环境下的最终解决方案 最近项目中使用了spring+Quartz定时任务、但是项目最近要集群部署、多个APP下如何利用Quartz 协调处理任务。       大家可以思考一下、现在有 A、B、C三个应用同时作为集群服务器对外统一提供服务、每个应用下各有一个Quartz、它们会按照既定的时间自动执行各自的任务。我们先不说实现什么功能,就说这样的架构其实有点像多线程。那多线程里就会存在“资源竞争”的问题,即可能产生 阅读详情

相关推荐

一文带你了解Quartz

在调度进行任务争抢时先对数据库表上锁,只有拿到锁的节点才可以进行获取任务并调度,这种是常规情况下的解决方案,但这种实现方式有着很强的倾入性,且在高并发的场景性能表现也不是很出色,所以大部分情况下,我们不是很推荐通过数据表的形式实现分布式任务调度一致性。框架分布式任务调度的较好解决方案,通过在内存中进行任务争抢,大大提分布式调度性能,但还是存调度空跑问题,即先抢到锁的节点获取仅有的任务,而其他节点随后得锁后却没有执行任务,造成一次空跑。为工作内容,并按照触发器的安排进行任务的调度的任务定时被调度器执行。

禅与计算机程序设计的艺术 2215

Quartz中Job相关类的理解和使用

原链接地址:https://www.jianshu.com/p/de06cf3c946b (一)、Job   Job可以理解为就是一个工作任务,代码中就是一个实现了org.quartz.Job或org.quartz.StatefulJob接口的java类。当Scheduler决定运行Job时,execute()方法就会被执行。   具体可以干啥:    1、每天定时发送系统邮件    2、在指...

云海 9784

解析vCard 3.0:提取电子名片中的姓名

N:LastName;FirstName;;;END:VCARD和END:VCARD标记数据块的开始和结束。N字段存储结构化姓名(分号分隔)。FN字段为直接可读的显示名称。其他字段如TELEMAIL等保存联系信息。

qq_45797625的博客 2778

java org.quartz.job_Java基于Quartz的定时任务调度服务(一)

Quartz的基本用法一 Quartz的简单介绍Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现,一个优秀的开源调度框架,其特点是:强大的调度能力.灵活的应用方式,分布式和集群的能. 官网:http://www.quartz-scheduler.orgQuartz的核心元素Scheduler:任务调度器,是实际执行任务调度的控制器Trigg...

weixin_34303763的博客 2252

将AD域服务从windows server 2008 R2 迁移到windows server 2019

添加一台windows 2019 的服务器并加入现有林的域中,并将角色升级为域控制器。然后迁移FSMO角色,使其成为PDC,然后降级旧DC,并提升域和林的功能级别。最后还要说下,Server 2008 R2我们还可以删除角色并退出当前域,这里就不做操作了。2)右键 mingling.com(我的域为mingling.com)--提升域级别功能。勾选 将域控制器添加到现有域,使用域管理员将DC2加入到现有的AD域。1)打开服务器管理器---工具---AD域和信任关系。2)运行域安装服务向导,选择下一步。

lionxam的博客 3659

从Maya到Unity:3D模型导入全流程避坑指南(含FBX导出设置)

本文详细解析了从Maya导出3D模型至Unity的全流程,重点剖析了FBX格式作为跨软件协作“中间人”的优劣与核心设置。指南涵盖了Maya端模型清理、FBX导出关键配置(如嵌入媒体、轴转换),以及Unity端的模型、材质、动画导入优化与常见问题(如材质丢失、UV法线错误、骨骼动画错乱)的实战解决方案,旨在帮助3D美术师与技术美术建立稳定、高效的工作流。

lg888的博客 790

Quartz任务调度-01

一.Quartz概念 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。 quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java...

Coding Farmer的博客 877

深入探讨 VQ-VAE:理解变分量化自动编码器

VQ-VAE代表"Variational Quantized Variational Autoencoder",是一种生成模型,通常用于处理高维数据,如图像和音频。它的设计灵感来自于变分自动编码器(VAE)和量化方法,结合了它们的优点,使得 VQ-VAE 能够生成高质量的数据,并在数据表示上引入离散性。VQ-VAE 是一种强大的生成模型,结合了变分自动编码器和量化方法的优点。它在图像和音频生成、数据压缩和生成性对抗网络等领域具有广泛的应用。

DeepViewInsight的博客 7015

Quartz官网

官网:http://quartz-scheduler.org/ 学习文档:http://quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/ 例子:http://quartz-scheduler.org/documentation/quartz-2.1.x/examples/  spring集成官网:http://static.

蓝天白云 9077

SAP-ABAP:SAP信贷管理核心:CL_UKM_BUPA_FACTORY类完整解析与实践指南

SAP信贷管理核心类CL_UKM_BUPA_FACTORY解析 CL_UKM_BUPA_FACTORY是SAP信贷管理(UKM)模块的核心类,作为业务伙伴信贷数据的中央控制台,它提供: 统一入口:标准化实例化客户/供应商信贷对象 主要功能: 获取单条/批量业务伙伴数据 安全保存数据变更 封装底层数据访问逻辑 典型应用场景: 信贷主数据批量维护 自动化限额调整 订单信贷实时检查 性能优化建议: 使用批量方法替代循环单条处理 合理设置字段选择 实施缓存策略 该类通过简洁API简化复杂信贷操作,是SAP信贷管理开

baidu_35680696的博客 1208

这20个网络工程项目经验,帮我跳槽加薪不止一次

嘿,大家好,我是圈圈,一个在网络工程圈子里混了十多年的老鸟。从国企的网管起步,到现在给大厂做顾问,我见过太多简历:有的光鲜亮丽,证书一堆,但一聊项目,就露怯;有的简历朴实,但列出的项目经验让人眼前一亮,直接拿offer。为什么?因为招聘官最看重实战。理论谁都会背,项目经验才是你的“硬通货”。尤其在网络工程这行,项目不光证明你的技能,还展示你解决问题的能力。今天,我就分享20个我亲身经历或见过的网络工程项目经验。每个都值得写进简历,不是吹牛,这些项目帮我跳槽加薪不止一次。

网络技术联盟站 431

Quartz的了解

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。quartz是开源且具有丰富特性的"任务调度库",能够集成于任何的java应用,小到独立的应用,大至电子商业系统。quartz能够创建亦简单亦复杂的调度,以执行上十、上百,甚至上万的任务。任务job被定义为标准的java组件,能够执行任何你想要实现的功能。quartz调度框架包含许多企业级的特性,如JTA事务、集群的支持。

小星袁 954

【现代人形机器人:从物理建模到大模型驱动的控制与学习】第1章 机器人建模回顾

本章建立读者进行后续控制 / 优化 / 学习工作的数学与计算基础。内容分为三大块:刚体运动学:位姿表示、坐标变换、旋转参数与李代数/李群(指数映射、twist)多关节机构的正/逆运动学:DH 与 POE 两种建模、雅可比矩阵推导、数值/解析逆解方法与奇异性问题约束动力学:拉格朗日公式、牛顿—欧拉递归算法、接触/冲击模型、受约束系统的方程(拉格朗日乘子与互补性条件)每一节同时给出与练习题。假设读者已具备线性代数(矩阵、特征分解、SVD)、多变量微积分与基础力学(牛顿第二定律)知识。

u012133341的博客 185

了解Quartz

Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述:   ●Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的

yzh_yzh66的博客 386

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

quartz详解1:初步了解quartz?

一、引入       你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz调度器。     旁注:Matrix目前就大量使用到了Quartz。比如,排

Tim_java2的博客 920

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Quartz框架(了解篇)

1.Quartz的作用? 答:Quartz是一个任务调度框架,当遇到以下问题时: 例: 想在每月25号,自动还款; 想在每年4月15日给某人发送邮件; 想每隔1小时,备份一下自己的资料。 总结:可以简单的理解为就是一个定时器,在指定的时间触发,由线程调度去执行 — Quartz基本元素关系图 2.怎么使用? 答:创建“任务调度器” -> 创建并设置“触发器” -> 定义“任务” ->启动! 1.任务调度器:由StdSchedulerFactory工厂获取。例:Scheduler sche

H_g_y_的博客 8391

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

quartz详解1:初步了解quartz

http://blog.itpub.net/11627468/viewspace-1763389/一、引入      你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Q...

庖丁解牛 323

Quartz

什么是Quartz Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法:       public voi

奋斗的小鸟 9万+

定时任务之Quartz

Quartz 的设计核心在于将“做什么(Job)”与“何时做(Trigger)”解耦,并通过“调度器(Scheduler)”进行管理。注意:使用数据库模式前,需确保数据库中已存在 Quartz 所需的 11 张表(如。如果不配置任何 Quartz 属性,Spring Boot 默认使用内存存储。在实际生产中,往往需要通过接口动态添加、修改或删除任务。starter,极大地简化了配置过程。场景 A:内存模式(默认,无需额外配置)Spring Boot 提供了。场景 B:数据库持久化与集群模式。

Listen·Rain的博客 1561

Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析

官网:http://www.quartz-scheduler.org/源码地址:https://github.com/quartz-scheduler/quartzQuartz 的意思是石英,像石英表一样精确。Quatz 是一个特性丰富的,开源的任务调度库,它几乎可以嵌入所有的 Java 程序,从很小的独立应用程序到大型商业系统。Quartz 可以用来创建成百上千的简单的或者复杂的任务,这些任务可以用来执行任何程序可以做的事情。Quartz 拥有很多企业级的特性,包括支持 JTA 事务和集群。

秃了也弱了 3287

quartz mysql死锁问题_Quartz 并发

1、StatefulJobimplements StatefulJob使Job成为有状态的,顺序执行同一个有状态的job实例不存在并发,无状态的job的并发数由上面配置的线程数决定。不想并发的话,设置成1,第二个线程在前一个执行完以后触发执行。线程数大于1时,如果存在空闲线程,则到执行时间点即触发执行。2、MethodInvokingJobDetailFactoryBeanMethodInvoki...

weixin_29070721的博客 3000

了解spring Quartz体系结构

概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述: ●Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上

wdsafmy468619的专栏 497

关于Quartz 2D绘图

    近期由于所做的任务中涉及Quartz 2D绘图方面的比较多,对Quartz 2D进行了一次深入的研究。Quartz主要就是一些函数,对象来进行对视图在内存中进行绘制,在将视图加入到当前视图中。    首先:获得所在的上下文以便将绘制好的视图加入到现在视图中从而显示。CGContextRef  Context=UIGraphicsGetCurrentContext();   2.颜色:Iphone中基本的颜色为红色,蓝色,绿色,还有透明度也是必备的。他们都是CGFloat类型的,且每个值只能在0到1中

chen154556138的专栏 1228

【定时调度】- 01 quartz的基础你真的了解吗

往期推荐【RabbitMQ分析】01 SimpleMessageListenerContainer原理分析【sharding-sphere】 - 01 SQL路由【Nacos源码分析】- ...

god_86的专栏 558
上一篇: 百度查询复制粘贴:MySQL存储过程详解 mysql 存储过程
下一篇: java的反射机制_1
郭胜_自强
博客等级 码龄11年 9粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值