Quartz Introductory case and introduction (integrated with spring)

Source: Internet
Author: User

Quartz overview

Quartz is a opensymphony open source organization in the Job scheduling field another open source project, which can be combined with the Java EE and J2SE application can also be used alone. Quartz can be used to create a simple or complex program that runs 10, hundreds, or even tens of thousands of jobs. Jobs can be made into standard Java components or EJBs.

Official website: http://www.quartz-scheduler.org/downloads/

After the download is such a compressed package

Unzip the tarball to get the following directory file

First, create a new Java project

Second step, import the related jar package

Step three, create the job class

1  Public class Testquartz {2      Public void run () {3         System.out.println (new simpledateformat ("task executed" + "Yyyy-mm-dd HH:mm:ss"). Format (new  Date ())); 4     }5 }

Fourth step: Configure the Job class in the spring configuration file

<!---<id= "MyJob"  class= " Com.test.job.MyJob "/>

Fifth step: Configure Jobdetail in the spring configuration file

<!--Configure Jobdetail (Job details) -<BeanID= "Myjobdetail"class= "Org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <!--job instances that are used -    < Propertyname= "TargetObject"ref= "MyJob"/>    <!--methods in the job instance -    < Propertyname= "Targetmethod">        <value>Run</value>    </ Property></Bean>

Sixth step: Configure the trigger in the Spring configuration file (the cron expression below will be explained in detail)

<!--Configuring the Trigger trigger -<BeanID= "Mytrigger"class= "Org.springframework.scheduling.quartz.CronTriggerFactoryBean">    < Propertyname= "Jobdetail"ref= "Myjobdetail"/>    < Propertyname= "Cronexpression">        <!--Configure cron expressions to execute every 5 seconds -        <value>0/5 * * * *?</value>    </ Property></Bean>

Seventh Step: Configure Scheduler in the spring configuration file

<!--Configuring the Scheduler Factory -<BeanID= "Scheduler"class= "Org.springframework.scheduling.quartz.SchedulerFactoryBean">    < Propertyname= "Triggers">        <List>            <refBean= "Mytrigger"/>        </List>    </ Property></Bean>

Eighth step: Load the Spring configuration file and create a spring factory

 Public class Testquartz {    publicstaticvoid  main (string[] args) {          New Classpathxmlapplicationcontext ("Applicationcontext.xml");}    }

At this point, once the main method is run, the Run method is called every 5 seconds.

 

Core Concepts

1, Scheduler is a scheduler container, the container can be filled with a large number of jobdetail and trigger, when the container starts, the inside of each jobdetail will automatically according to the trigger step to execute.

2, Jobdetail is an executable work, which itself may be stateful.

3, trigger trigger represents a scheduling parameter configuration, when to tune.

4, when Jobdetail and trigger in the Scheduler container registration, the formation of a good assembly of the work (Jobdetail and trigger a pair of children), can accompany the container start and dispatch execution.

5, Scheduler is a container, there is a thread pool in the container, used to schedule each job in parallel, which can improve the efficiency of the container.

Format of cron expressions

 

(1) The Quartz cron format is supported down to the second level of the schedule.

(2) Quartz uses cron expressions to store execution plans. A crontrigger that references a cron expression is associated with the job at the scheduled time.

  (3) Quartz provides seven domains , each of which has the following meanings

 

  The following table lists the seven domains supported by the Quartz cron expression.

Quartz Cron expression support to seven domains

name

Whether you must

allow values

special characters

seconds

Yes

0-59

td>

,-*/

min

Yes

0-59

,-*/

Yes

0-23

,-*/

Day

Yes

1-31

,-*?/L W C

Month

Yes

1-12 or Jan-dec

,-*/

Week

is

1-7 or Sun-sat

,-*?/L C #

Year

No

Empty or 1970-2099

,-*/


Note: (1) The names of the month and week are case insensitive. FRI and FRI are the same.

(2) There are spaces between the fields, and the simplest expression we can write looks like this:

* * * ? * *
This expression fires a deployed job every second.

·Understanding Special Characters

   * Asterisk

Use an asterisk (*) to indicate that you want to include all valid values on this domain. For example, using an asterisk on a month field means that the trigger is triggered every month.

Examples of expression patterns:

0 * 17 * *?

Meaning: Trigger is fired every minute from 5 o'clock in the afternoon to 5:59 each day. It stops at 5:59 because the value 17 is on the hour field, and at 6 o'clock in the afternoon, the hour becomes 18, and the trigger is no longer heeded until the next day of 5 o'clock in the afternoon.

Use the * character when you want trigger to be fired on all valid values for that domain.

   ? question Mark

? Can only be used on day and week fields, but cannot be used concurrently on both domains. Can you think? The character is "I don't care what the value is on that field." "This differs from the asterisk, which indicates each value on the field." Is that you do not specify a value for the field.

The reason why a value cannot be specified at the same time on both domains is difficult to interpret or even incomprehensible. Basically, assuming that you specify a value at the same time, the meaning becomes ambiguous: consider if an expression has a value of 11 on the day field and WED is specified on the domain. So is it to trigger only in the 11th of each month, and exactly the day of Wednesday is excited? Or was it fired at number 11th in every Wednesday? The way to remove this ambiguity is that you cannot specify values on both domains at the same time.

Just remember that if you specify a value for one of the two fields, you have to put one on the other word value.

Examples of expression patterns:

0 10,44 14? 3 WEB

Meaning: Every Wednesday 2:10 and 2:44 in March is triggered.

   , comma

A comma (,) is used to specify a list of values on a domain. For example, using the value 0,15,30,45 on the second field means that a trigger is triggered every 15 seconds.

Examples of expression patterns:

0 0,15,30,45 * * *?

Meaning: The trigger is triggered once per quarter.

   / Slash Slash

The slash (/) is used for the increment of the timesheet. We've just used a comma to indicate a 15-minute increment, but we can also write this 0/15.

Examples of expression patterns:

0/15 0/30 * * *?

Meaning: Trigger trigger every 15 seconds at the hour and the slightest.

   - Medium Dash

A medium dash (-) is used to specify a range. For example, 3-8 on the hour field means "3,4,5,6,7 and 8 points." "The value of the domain does not allow a rollback, so a value like 50-10 is not allowed.

Examples of expression patterns:

0 45 3-8? * *

Meaning: 3 points in the morning to 8 points in the morning of 45 ticks trigger trigger.

   LLetters

L describes the last value allowed on a domain. It is supported only by the day and week fields. When used on a day field, represents the last day of the month specified on the month field. For example, when JAN is specified on the current month field, L on the Japanese field will cause trigger to be triggered on January 31. If the monthly field is SEP, then L will indicate a trigger on September 30. In other words, the trigger is triggered on the last day of the corresponding month, regardless of the month specified.

Expression 0 0 8 L *? The meaning is to trigger trigger at 8:00 on the last day of each month. The * description on the month field is "every month".

When the L letter is used on the field, the last day of the week is indicated, that is, Saturday (or the number 7). So if you need 11:59 trigger trigger in the last Saturday of the month, can you use such expressions 0 59 23? L

When used on a week field, you can use a number to connect with L to represent the last one weeks of the month X. For example, an expression 0 0 12? * 2L is said to trigger trigger at the last one weeks of each month.

Do not allow range and list values to be associated with L

Although you can use the days of the week (1-7) with L, you are not allowed to use a range value and a list value with L. This can produce unpredictable results.


  W Letters

The W character represents weekdays (MON-FRI) and can only be used in the day domain. It is used to specify the most recent weekday from the specified day. Most of the business process is based on the work week, so the W character may be very important. For example, 15W in the daily field means "the most recent weekday of the month 15th." "If the number 15th is Saturday, then trigger will be triggered at 14th (Thursday), because the nearest 15th is Monday, this example will also be 17th (translator Unmi Note: Will not be triggered at 17th, if it is 15W, may be 14th number (15th is Saturday) or 15th ( Number 15th is Sunday) trigger, that is, can only appear in the adjacent day, if the day of the 15th is on weekdays directly on the day of execution. W can only be used in the specified day field as a single day and cannot be a range or list value.

  # Well number

The # character can only be used in the field of the week. It is used to specify which day of the week of the month. For example, if you specify the value of the week field as 6#3, it means the third Friday of the month (6= Friday, #3意味着月份中的第三周). Another example 2#1 meaning is the first Monday of the month (2= Monday, #1意味着月份中的第一周). Note that if you specify #5, but there is no 5th week in the month, then the month does not trigger.

Example: meaning of an expression

"00 12 * *?" trigger 12 o'clock noon every day.

"015 10?" * * "10:15 per day" trigger

"015 10 * *?" Daily 10:15 Trigger

"015 10 * *? *" triggered 10:15 daily

"015 10 * *? 2005" 2005-year daily 10:15 Trigger

"0* 14 * *?" triggers every 1 minutes from 2 o'clock in the afternoon to 2:59 every day

"00/5 14 * *?" triggers every 5 minutes from 2 o'clock in the afternoon to 2:55 daily

"00/5 14,18 * *?" triggers every 5 minutes from 2 o'clock in the afternoon to 2:55 daily and from 6 o'clock in the afternoon to 6:55

"00-5 14 * *?" triggers every 1 minutes from 2 o'clock in the afternoon to 2:05 daily

"010,44 14?" 3WED "2:10 and 2:44 triggers in Wednesday of March every year

"015 10?" *mon-fri "Monday to Friday 10:15 trigger

"015 10 15 *?" Monthly 15th 10:15 Trigger

"015" 10:15 trigger on the last day of the month

"015 10?" *6L "The last month of Friday 10:15 Trigger

"015 10?" * 6l2002-2005 "2002 to 2005 of the last of the monthly Friday 10:15 trigger

"015 10?" *6#3 "The third Friday 10:15 of the month is triggered

 

Quartz Introductory case and introduction (integrated with spring)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.