`
thinktothings
  • 浏览: 782253 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

quartz 执行时间配置

阅读更多

CronTrigger Tutorial

Introduction

cron is a UNIX tool that has been around for a long time, so its scheduling capabilities are powerful and proven. The CronTrigger class is based on the scheduling capabilities of cron.

CronTrigger uses "cron expressions", which are able to create firing schedules such as: "At 8:00am every Monday through Friday" or "At 1:30am every last Friday of the month".

Cron expressions are powerful, but can be pretty confusing. This tutorial aims to take some of the mystery out of creating a cron expression, giving users a resource which they can visit before having to ask in a forum or mailing list.

Format

A cron expression is a string comprised of 6 or 7 fields separated by white space. Fields can contain any of the allowed values, along with various combinations of the allowed special characters for that field. The fields are as follows:

Field Name Mandatory Allowed Values Allowed Special Characters
Seconds YES 0-59 , - * /
Minutes YES 0-59 , - * /
Hours YES 0-23 , - * /
Day of month YES 1-31 , - * ? / L W
Month YES 1-12 or JAN-DEC , - * /
Day of week YES 1-7 or SUN-SAT , - * ? / L #
Year NO empty, 1970-2099 , - * /

So cron expressions can be as simple as this: * * * * ? *

or more complex, like this: 0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010

Special characters

  • * ("all values" ) - used to select all values within a field. For example, "" in the minute field means *"every minute" .

  • ? ("no specific value" ) - useful when you need to specify something in one of the two fields in which the character is allowed, but not the other. For example, if I want my trigger to fire on a particular day of the month (say, the 10th), but don't care what day of the week that happens to be, I would put "10" in the day-of-month field, and "?" in the day-of-week field. See the examples below for clarification.

  • - - used to specify ranges. For example, "10-12" in the hour field means "the hours 10, 11 and 12" .

  • , - used to specify additional values. For example, "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday" .

  • / - used to specify increments. For example, "0/15" in the seconds field means "the seconds 0, 15, 30, and 45" . And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50" . You can also specify '/' after the '' character - in this case ' ' is equivalent to having '0' before the '/'. '1/3' in the day-of-month field means "fire every 3 days starting on the first day of the month" .

  • L ("last" ) - has different meaning in each of the two fields in which it is allowed. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month" . You can also specify an offset from the last day of the month, such as "L-3" which would mean the third-to-last day of the calendar month. When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing/unexpected results.

  • W ("weekday" ) - used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month" . So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.

The 'L' and 'W' characters can also be combined in the day-of-month field to yield 'LW', which translates to *"last weekday of the month"*.
  • # - used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means "the third Friday of the month" (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.
The legal characters and the names of months and days of the week are not case sensitive. MON is the same as mon .

Examples

Here are some full examples:

**Expression** **Meaning**
0 0 12 * * ? Fire at 12pm (noon) every day
0 15 10 ? * * Fire at 10:15am every day
0 15 10 * * ? Fire at 10:15am every day
0 15 10 * * ? * Fire at 10:15am every day
0 15 10 * * ? 2005 Fire at 10:15am every day during the year 2005
0 * 14 * * ? Fire every minute starting at 2pm and ending at 2:59pm, every day
0 0/5 14 * * ? Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day
0 0/5 14,18 * * ? Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day
0 0-5 14 * * ? Fire every minute starting at 2pm and ending at 2:05pm, every day
0 10,44 14 ? 3 WED Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.
0 15 10 ? * MON-FRI Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday
0 15 10 15 * ? Fire at 10:15am on the 15th day of every month
0 15 10 L * ? Fire at 10:15am on the last day of every month
0 15 10 L-2 * ? Fire at 10:15am on the 2nd-to-last last day of every month
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month
0 15 10 ? * 6L 2002-2005 Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005
0 15 10 ? * 6#3 Fire at 10:15am on the third Friday of every month
0 0 12 1/5 * ? Fire at 12pm (noon) every 5 days every month, starting on the first day of the month.
0 11 11 11 11 ? Fire every November 11th at 11:11am.
Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!

Notes

  • Support for specifying both a day-of-week and a day-of-month value is not complete (you must currently use the '?' character in one of these fields).
  • Be careful when setting fire times between the hours of the morning when "daylight savings" changes occur in your locale (for US locales, this would typically be the hour before and after 2:00 AM - because the time shift can cause a skip or a repeat depending on whether the time moves back or jumps forward. You may find this wikipedia entry helpful in determining the specifics to your locale:
    https://secure.wikimedia.org/wikipedia/en/wiki/Daylight_saving_time_around_the_world
分享到:
评论

相关推荐

    Spring Quartz如何动态配置时间

    Spring Quartz 动态配置时间 Spring Quartz 是一个功能强大的任务调度框架,广泛应用于 Java 企业级应用程序中。其中一个重要的功能便是动态配置时间,触发相应的任务。在本文中,我们将讨论如何使用 Spring Quartz...

    Quartz 数据库动态配置

    触发器则有多种类型,如SimpleTrigger、CronTrigger等,它们决定了任务的执行频率和时间。 在应用启动时,Quartz会读取数据库中的所有作业和触发器,将其加载到内存中。之后,任何对数据库中这些记录的修改,都会被...

    Springboot2-Quartz 后台可动态配置的定时任务

    Quartz支持复杂的调度策略,如cron表达式,可以定义任务执行的时间间隔。在SpringBoot项目中整合Quartz,可以方便地管理这些定时任务。 在SpringBoot 2.x中集成Quartz,我们需要以下几个步骤: 1. 添加依赖:在...

    关于spring中quartz的配置

    在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中安排定时任务的执行。Quartz是一个开源的作业调度框架,可以用来在Java应用程序中安排复杂的作业任务。以下将详细介绍如何在Spring中...

    Spring -Quartz的配置

    你需要创建一个实现了`org.quartz.Job`接口的类,这是Quartz执行任务的基础。在这个类中,你需要重写`execute(JobExecutionContext context)`方法,这个方法将在指定时间被调用执行实际的业务逻辑。 5. **启动和...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    3. 创建Job类:定义一个实现了`org.quartz.Job`接口的类,这是Quartz执行的任务实体。Spring可以通过注解或XML配置将其声明为bean。 4. 定义Trigger:创建一个`CronTrigger`或`SimpleTrigger`来指定任务的触发规则...

    Quartz CronTrigger配置说明

    CronTrigger 是 Quartz 调度器中一种非常强大的任务触发机制,它基于类似于 Unix cron 的表达式来定义任务的执行时间。CronTrigger 表达式由七个或八个字段组成,每个字段代表不同的时间单位,从左至右依次为秒、分...

    quartz定时调度器动态修改时间不用配置文件

    在许多场景下,我们可能需要在程序运行时动态地调整这些任务的执行时间,而无需重启服务或修改配置文件。这正是“quartz定时调度器动态修改时间不用配置文件”这一主题的核心内容。 首先,理解Quartz的基本概念是很...

    spring quartz集群配置

    Quartz集群配置的主要目标是确保在多台服务器环境下,任务的执行不会因为服务器故障或负载均衡而丢失,从而提供高可用性和容错性。以下是一些关键的配置点: 1. **数据库存储**:Quartz需要一个持久化的作业存储来...

    SpringMVC利用Quartz实现可配置的定时器

    而Quartz则是一个开源的作业调度框架,允许程序在指定的时间执行任务,实现定时任务的管理。结合SpringMVC,我们可以轻松地在Spring应用中配置和管理定时任务。 Quartz的核心概念包括Job(工作)、Trigger(触发器...

    定时器(quartz+spring)读取数据库配置

    最后,启动Spring容器,Quartz会自动加载数据库中的Job和Trigger配置,按照设定的时间执行相应的任务。 通过这种方式,我们可以构建一个高度可扩展和可配置的定时任务系统,只需在数据库中修改Job和Trigger的配置,...

    quartz时间配置

    ### quartz时间配置详解 #### 一、Cron表达式的构成与理解 Quartz是一个功能强大的开源作业调度框架,被广泛应用于各种应用场景中进行任务的定时调度。Cron表达式是Quartz中定义作业执行时间的一种方式,它由六个...

    SSH+quartz实现的可动态配置时间规则的定时任务

    SSH+quartz实现的可动态配置时间规则的定时任务是一个在IT行业中常见的需求,尤其是在企业级应用和服务中,为了实现自动化运维、数据处理或者业务触发等目的。SSH指的是Spring、Struts和Hibernate这三个Java开发框架...

    quartz 时间配置规则.doc

    ### quartz时间配置规则详解 #### 一、引言 Quartz 是一款开源的作业调度框架,它可以被应用在 Java 应用程序中实现对任务的定时执行。在 Quartz 中,触发器(Trigger)用于控制作业(Job)何时执行。本文档主要...

    web工程quartz的配置实例

    在Job执行过程中,如果发生异常,Quartz默认会重新尝试执行。你可以通过设置`jobListener`和`triggerListener`来监听并处理这些异常。 9. **集群支持** 对于高可用性需求,Quartz支持集群部署,多个节点共享同一...

    springboot+quartz 动态化配置定时任务

    4. 编写Trigger:Trigger是触发Job执行的规则,可以通过`CronTrigger`或`SimpleTrigger`来定义执行时间。 三、动态化管理 为了实现页面上的动态操作,我们需要创建一个RESTful API,提供增删改查及暂停恢复等功能。...

    quartz在tomcat下配置使用

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行定时任务。在Java Web应用中,特别是在Tomcat这样的应用服务器中,Quartz能够帮助我们实现后台任务的自动化执行,比如定期数据备份、清理缓存等。这篇...

    spring quartz 非配置动态定时

    在运行时,我们可以通过Spring的ApplicationContext获取到Scheduler的引用,然后调用`scheduler.scheduleJob(JobDetail, Trigger)`方法来添加新的任务,或者调用`scheduler.rescheduleJob(TriggerKey, Trigger)`来...

    spring java 定时器 执行两次 quartz

    - 对于多实例问题,可以配置Quartz为集群模式,确保只有一个实例执行任务。 - 检查并修正Spring的定时任务配置,确保只触发一次任务。 - 如果任务不是线程安全的,需要确保其在执行时互斥,例如使用`synchronized`...

    Spring3.2.3+Quartz2.2 整合配置

    在上述配置中,`jobExecutionService`是自定义的Job执行类,它需要实现`org.quartz.Job`接口或者使用Spring的`MethodInvokingJobDetailFactoryBean`来调用特定方法。`CronTriggerFactoryBean`用于设置触发器的执行...

Global site tag (gtag.js) - Google Analytics