一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java的作業調度類庫Quartz基本使用指南

Java的作業調度類庫Quartz基本使用指南

2020-04-08 14:33goldensun JAVA教程

這篇文章主要介紹了Java的作業調度類庫Quartz基本使用指南,Quartz能夠讓類按照指定的計劃順序執行,需要的朋友可以參考下

一、常用接口:
1、Job接口:該接口只有一個方法

?
1
void execute(JobExecutionContext context)

開發者實現該接口定義需要執行的任務。JobExecutionContext類提供調度上下文的各種信息

2、JobDetail:用于描敘Job實現類及其他的一些靜態信息

3、Trigger:描敘觸發Job執行的時間觸發規則

4、Calendar:定義了一個關聯Trigger可能(或者不可能)觸發的時間空間。它沒有定義觸發的真實時間,而是用在在普通的Schedule需要限制Trigger觸發的時候。大部分Calendar包含默認所有的時間,并且用戶去排除部分時間。

5、Scheduler:運行容器,使用SchedulerFactory創建Scheduler實例

二、代碼示例:

1、使用Quartz,需要實現Job接口;

?
1
2
3
4
5
6
public class TestJob implements Job {
 public void execute(JobExecutionContext context) throws JobExecutionException {
 System.out.println("Hello World! - " + new Date());
 //do more...
 }
}

2、調度【比較簡單,直接看代碼就可以了】

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class quartzTest {
 public static void main(String args[]) throws SchedulerException, ParseException {
 JobDetail jobDetail= JobBuilder.newJob(TestJob.class)
  .withIdentity("testJob_1","group_1")
  .build();
 
 Trigger trigger= TriggerBuilder
  .newTrigger()
  .withIdentity("trigger_1","group_1")
  .startNow()
  .withSchedule(SimpleScheduleBuilder.simpleSchedule()
   .withIntervalInSeconds(10) //時間間隔
   .withRepeatCount(5) //重復次數(將執行6次)
   )
  .build();
 SchedulerFactory sf = new StdSchedulerFactory();
 Scheduler sched = sf.getScheduler();
 
 sched.scheduleJob(jobDetail,trigger);
 
 sched.start();
 
 }
}

這里使用的是2.2.1版本,參考官方文檔的示例??吹揭恍﹨⒖紩褂玫陌姹颈容^老,所以會有一些出入,很多方法都被棄用了,所以還是直接看文檔比較實在,Quartz的官方網站地址是:http://www.quartz-scheduler.org/

三、Quartz2.2.1配置文件示例

?
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
# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#
 
#集群配置
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
 
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 10
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
 
org.quartz.jobStore.misfireThreshold: 60000
 
#============================================================================
# Configure JobStore
#============================================================================
 
#默認配置,數據保存到內存
#org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
#持久化配置
org.quartz.jobStore.class:org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties:true
#數據庫表前綴
org.quartz.jobStore.tablePrefix:qrtz_
org.quartz.jobStore.dataSource:qzDS
 
#============================================================================
# Configure Datasources
#============================================================================
#JDBC驅動
org.quartz.dataSource.qzDS.driver:com.mysql.jdbc.Driver
org.quartz.dataSource.qzDS.URL:jdbc:mysql://localhost:3306/quartzdb
org.quartz.dataSource.qzDS.user:root
org.quartz.dataSource.qzDS.password:123456
org.quartz.dataSource.qzDS.maxConnection:10

四、數據庫相關
持久化須事先在相應數據庫創建Quartz的數據表,在Quartz發布包里面的docs/dbTables有對應不同數據庫的SQL腳本

例如,這里使用的是MYSQL:

Java的作業調度類庫Quartz基本使用指南

數據表字段解釋:

  • 表qrtz_job_details: 保存job詳細信息,該表需要用戶根據實際情況初始化
  • job_name:集群中job的名字,該名字用戶自己可以隨意定制,無強行要求
  • job_group:集群中job的所屬組的名字,該名字用戶自己隨意定制,無強行要求
  • job_class_name:實現類的完全包名,quartz就是根據這個路徑到classpath找到該job類
  • is_durable:是否持久化,把該屬性設置為1,quartz會把job持久化到數據庫中
  • job_data:一個blob字段,存放持久化job對象
  • 表qrtz_triggers: 保存trigger信息
  • trigger_name: trigger的名字,該名字用戶自己可以隨意定制,無強行要求
  • trigger_group:trigger所屬組的名字,該名字用戶自己隨意定制,無強行要求
  • job_name: qrtz_job_details表job_name的外鍵
  • job_group: qrtz_job_details表job_group的外鍵
  • trigger_state:當前trigger狀態,設置為ACQUIRED,如果設置為WAITING,則job不會觸發
  • trigger_cron:觸發器類型,使用cron表達式
  • 表qrtz_cron_triggers:存儲cron表達式表
  • trigger_name: qrtz_triggers表trigger_name的外鍵
  • trigger_group: qrtz_triggers表trigger_group的外鍵
  • cron_expression:cron表達式
  • 表qrtz_scheduler_state:存儲集群中note實例信息,quartz會定時讀取該表的信息判斷集群中每個實例的當前狀態
  • instance_name:之前配置文件中org.quartz.scheduler.instanceId配置的名字,就會寫入該字段,如果設置為AUTO,quartz會根據物理機名和當前時間產生一個名字
  • last_checkin_time:上次檢查時間
  • checkin_interval:檢查間隔時間

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人看的羞羞视频免费观看 | 亚洲网站大全 | 黄漫免费观看 | 青青青国产精品国产精品久久久久 | 成人免费播放器 | 女仆掀起蕾丝裙被打屁股作文 | 色哟哟哟在线精品观看视频 | 欧美亚洲国产精品久久久 | 成熟女人50岁一级毛片不卡 | 成人特级毛片69免费观看 | 欧美s级人做人爱c视频 | 4hc44四虎www在线影院男同 | 奇米777狠狠| 四虎最新免费观看网址 | 欧美se图| 日韩制服丝袜在线观看 | 欧美成人免费一区在线播放 | 高考录取率1977-2021 | 欧美日韩高清一区 | 俄罗斯图书馆无打码久久 | 色戒真做gif动图 | 青苹果乐园影院免费观看完整版 | 菠萝视频污 | gogort人体的最新网站 | 欧美日韩高清完整版在线观看免费 | 欧美日韩在线观看区一二 | 天生奶水1v1高h | 免费叼嘿视频 | 免费视频 | 久久99国产视频 | 国产成人免费视频 | 久久99精国产一区二区三区四区 | 欧美大片一区二区三区 | 国产精品久久免费 | 成人啪精品视频免费网站 | 国产日韩精品一区二区在线观看播放 | 成人免费在线视频网 | 欧美精品久久久久久久免费观看 | 亚洲va久久久久综合 | 四虎影院在线免费播放 | 手机在线观看伦理片 |