必威体育Betway必威体育官网
当前位置:首页 > IT技术

quart简单使用

时间:2019-06-09 21:42:07来源:IT技术作者:seo实验室小编阅读:77次「手机版」
 

quart

quartz原理

Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便。

Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可。

1

2

3

4

5

6

7

8

9

10

1、Job

表示一个工作,要执行的具体内容。此接口中只有一个方法

void execute(JobExecutionContext context)

2、JobDetail

JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。

3、Trigger代表一个调度参数的配置,什么时候去调。

4、Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。

小案例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

import org.quartz.*;

import org.quartz.impl.StdSchedulerFactory;

import java.util.Date;

/**

* quartz定时器测试

*/

public class MyJob implements Job {

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

System.out.println(new Date() + ": doing something...");

}

}

class Test {

public static void main(String[] args) {

//1、创建JobDetial对象

JobDetail jobDetail = new JobDetail();

//设置工作项

jobDetail.setJobClass(MyJob.class);

jobDetail.setName("MyJob_1");

jobDetail.setGroup("JobGroup_1");

//2、创建Trigger对象

SimpleTrigger strigger = new SimpleTrigger();

strigger.setName("Trigger_1");

strigger.setGroup("Trigger_Group_1");

strigger.setStartTime(new Date());

//设置重复停止时间,并销毁该Trigger对象

java.util.Calendar c = java.util.Calendar.getInstance();

c.setTimeInMillis(System.currentTimeMillis() + 1000 * 1L);

strigger.setEndTime(c.getTime());

strigger.setFireInstanceId("Trigger_1_id_001");

//设置重复间隔时间

strigger.setRepeatInterval(1000 * 1L);

//设置重复执行次数

strigger.setRepeatCount(3);

//3、创建Scheduler对象,并配置JobDetail和Trigger对象

SchedulerFactory sf = new StdSchedulerFactory();

Scheduler scheduler = null;

try {

scheduler = sf.getScheduler();

scheduler.scheduleJob(jobDetail, strigger);

//4、并执行启动、关闭等操作

scheduler.start();

} catch (SchedulerException e) {

e.printStackTrace();

}

// try {

// //关闭调度器

// scheduler.shutdown(true);

// } catch (SchedulerException e) {

// e.printStackTrace();

// }

}

}

运行案例

1

2

3

//4、并执行启动、关闭等操作

scheduler.start();

scheduler.shutdown(true);

结果

1

2

3

Thu Jul 23 10:11:50 CST 2009: doing something...

Process finished with exit code 0

总结

1

2

3

4

5

6

7

8

9

1、scheduler是一个计划调度器容器(总部),容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。

2、JobDetail是一个可执行的工作,它本身可能是有状态的。

3、Trigger代表一个调度参数的配置,什么时候去调。

4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。

5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。

在spring 中的应用

引入jar包

1

2

// https://mvnrepository.com/artifact/org.quartz-scheduler/quartz

compile group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.0'

spring配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<!-- 定义一个任务类 -->

<bean id="myJob" class="com.item1024.quartz.TimeTask"></bean>

<!-- jobDetail -->

<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="myJob"></property>

<property name="targetMethod" value="racWallet"></property>

<property name="concurrent" value="false" /><!-- 作业不并发调度 false 任务未执行完不会执行下一个任务 -->

</bean>

<!-- 定义trigger 触发器 -->

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">

<property name="jobDetail" ref="jobDetail"></property>

<property name="cronExpression" value="*/10 * * * * ?"></property> <!-- 十秒一次 -->

</bean>

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list>

<ref bean="cronTrigger"/>

</list>

</property>

</bean>

任务调度类

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

package com.item1024.quartz;

import com.item1024.bean.TransBean;

import com.item1024.constant.TylConstant;

import com.item1024.mapper.TransLogMapper;

import com.item1024.pojo.TransLog;

import com.item1024.service.OpCoinService;

import com.item1024.service.UserWalletRacService;

import javax.annotation.Resource;

import java.util.Date;

import java.util.List;

/**

* @author 阳十三

* @email [email protected]

* @blog http://www.item1024.com

* @date 2017/8/30

*/

public class TimeTask {

public void racWallet() {

System.out.println("交易任务开启: ");

}

}

相关阅读

Quartus II 13.0 最全的安装、破解教程(包含下载地址)

一、 首先是Quartus II 13.0.1 软件的下载 如果你没有那么高的要求,用个低版本的Quartus II 就足够了,而且低版本的软件比较稳定, 为

spring Quartz 源码分析--触发器类CronTriggerBean源

前面我们讲到了Quartz框架在项目中的实现,在Quartz中的重要API有两个重要的触发器类:CronTrigger 和SimpleTrigger 在Quartz框

Quartz配置参考

0 前言Quartz的配置通常是使用properties文件结合StdSchedulerFactory完成的。StdSchedulerFactory读取配置文件,并实例化schedule

Quartz与Spring集成—— SchedulerFactoryBean的初始

前言 Quartz是一个开源的定时调度框架,支持集群部署。我们可以通过其Java API来使用它,或者通过Spring来配置与管理,也可以结合使用

Quartz CronTrigger最完整触发时间配置说明

CronTrigger配置格式:格式: [秒] [分] [小时] [日] [月] [周] [年] 序号说明 是否必填 允许填写的值允许的通配符 1 秒 是

分享到:

栏目导航

推荐阅读

热门阅读