Play 1.x框架學習之四:定時做業調度 (job scheduler In play framework)

Play框架提供了定時執行任務的功能模塊,也就是Job。你們能夠用來作一些定時的任務,如數據彙總,定時同步等。play使用了Quartz項目。能夠輕鬆地定製調度任務的時間。Play框架還預置了幾種調度方式,如項目啓動調度,啓動異步調動,每多少時間調度,和通用的Quartz調度設置。 首先咱們看看啓動調度,啓動調度是同步於項目啓動:html

package job;

import play.jobs.Job;
import play.jobs.OnApplicationStart;

@OnApplicationStart
public class JobOnStart extends Job{
	@Override
	public void doJob() throws Exception {
		super.doJob();
		System.out.println("Hello Job!");
	}
}

還有啓動異步調度:java

package job;

import play.jobs.Job;
import play.jobs.OnApplicationStart;

@OnApplicationStart(async = true)
public class JobOnStartAsync extends Job{
	@Override
	public void doJob() throws Exception {
		super.doJob();
		System.out.println("Hello Job, this is a async!");
	}
}

而後還有每多少時間調度:框架

package job;

import play.jobs.Every;
import play.jobs.Job;

@Every("1min")
public class JobOnSomeTime extends Job{
	@Override
	public void doJob() throws Exception {
		System.out.println("Hello Clock! Minute Over!");
	}
}

還有通用的Quartz調度:異步

package job;

import play.jobs.Job;
import play.jobs.On;

@On(value = "0 28 11 ? * *")
public class JobOnCommon extends Job{
	public void doJob() throws Exception {
		System.out.println("Hello 11:28!");
	}
}

控制檯的打印:async

11:26:17,730 INFO  ~ Application 'Proto' is now started !
Hello Job!
Hello Job, this is a async!
11:26:17,903 INFO  ~ Listening for HTTP on port 9000 ...
Hello Clock! Minute Over!
Hello 11:28!
Hello Clock! Minute Over!
Hello Clock! Minute Over!
Hello Clock! Minute Over!

Quartz 是個開放源碼項目,提供了豐富的做業調度集。上面表達式中@on註解對應的字段是: Seconds Minutes Hours DayofMonth Month DayofWeek Year(year爲可選字段,通常能夠省略) 如:0 28 11 ? * * :天天11點28分 24 30 1 ? * WED : 每週三1點20分24秒 ide

更詳細的介紹能夠查考官網: http://quartz-scheduler.org/ this

IBM的developerworks中也有文章: http://www.ibm.com/developerworks/cn/java/j-quartz/index.html code

百度文庫中的介紹: http://wenku.baidu.com/view/0e3b19e6f8c75fbfc77db22a.htmlhtm

相關文章
相關標籤/搜索