文档章节

Play 1.x框架学习之四:定时作业调度 (job scheduler In play framework)

奋斗到天明
 奋斗到天明
发布于 2015/08/27 16:22
字数 446
阅读 876
收藏 1

Play框架提供了定时执行任务的功能模块,也就是Job。大家可以用来做一些定时的任务,如数据汇总,定时同步等。play使用了Quartz项目。可以轻松地定制调度任务的时间。Play框架还预置了几种调度方式,如项目启动调度,启动异步调动,每多少时间调度,和通用的Quartz调度设置。 首先我们看看启动调度,启动调度是同步于项目启动:

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!");
	}
}

还有启动异步调度:

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!");
	}
}

控制台的打印:

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秒 

更详细的介绍可以查考官网: http://quartz-scheduler.org/ 

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

百度文库中的介绍: http://wenku.baidu.com/view/0e3b19e6f8c75fbfc77db22a.html

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
定时调度系列之Quartz.Net详解

一. 背景   我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "、"每天的0点需要统计前一天的考勤记录"、"每个月的1号计算上个月的库存情况"、"定时初始...

dotNET跨平台
06/24
0
0
基于Mesos的作业云 Elastic-Job-Cloud 源码分析 —— 作业调度(一)

本文基于 Elastic-Job V2.1.5 版本分享 Elastic-Job-Cloud 源码分析系列(6篇)传送门 1. 概述 2. 作业执行类型 3. Producer 发布任务 3.1 常驻作业 3.2 瞬时作业 3.3 小结 4. TaskLaunchSch...

芋道源码掘金Java群217878901
2017/09/07
0
0
Python任务调度模块 – APScheduler

APScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务、并以daemon方式运行应用。目前最新版本为3.0.x。 在APS...

ArlenXu
2016/04/13
85
0
Python任务调度模块 – APScheduler

APScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务、并以daemon方式运行应用。目前最新版本为3.0.x。 在APS...

shawnplaying
2016/09/19
73
0
定时任务发展史(一)

定时任务是互联网行业里最常用的服务之一,本文给大家介绍定时任务在我司的发展历程。 linux系统中一般使用crontab命令来实现,在Java世界里,使用最广泛的就是quartz了。我司使用quartz就已...

ityouknow
2017/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

HashTable

Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射 Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口 Hashtable 的函数都是同步的,这意味着它是线...

职业搬砖20年
3分钟前
0
0
Linux系统状态查看命令1

10月23日任务 10.1 使用w查看系统负载 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令 查看系统负载 w命令 # 第一行:当前系统时间,系统启动时间,登录的用户,系统负载:1分钟...

robertt15
19分钟前
0
0
缓存那些事

前言 一般而言,现在互联网应用(网站或App)的整体流程,可以概括如图1所示,用户请求从界面(浏览器或App界面)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容...

Skqing
28分钟前
0
0
nginx开启stub_status模块配置方法

nginx开启stub_status模块配置方法 2017年12月13日 15:57:29 ly_dengle 阅读数:3765 标签: stub_statusnginxnginx开启stub_status模块 更多 个人分类: 软件工具php 版权声明:本文为博主原...

linjin200
34分钟前
3
0
挑逗 Java 程序员的那些 Scala 绝技

有个问题一直困扰着 Scala 社区,为什么一些 Java 开发者将 Scala 捧到了天上,认为它是来自上帝之吻的完美语言;而另外一些 Java 开发者却对它望而却步,认为它过于复杂而难以理解。同样是 ...

joymufeng
37分钟前
94
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部