程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java的功課調劑類庫Quartz根本應用指南

Java的功課調劑類庫Quartz根本應用指南

編輯:關於JAVA

Java的功課調劑類庫Quartz根本應用指南。本站提示廣大學習愛好者:(Java的功課調劑類庫Quartz根本應用指南)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的功課調劑類庫Quartz根本應用指南正文


1、經常使用接口:
1、Job接口:該接口只要一個辦法

void execute(JobExecutionContext context)

開辟者完成該接口界說須要履行的義務。JobExecutionContext類供給調劑高低文的各類信息

2、JobDetail:用於描敘Job完成類及其他的一些靜態信息

3、Trigger:描敘觸發Job履行的時光觸發規矩

4、Calendar:界說了一個聯系關系Trigger能夠(或許弗成能)觸發的時光空間。它沒有界說觸發的真及時間,而是用在在通俗的Schedule須要限制Trigger觸發的時刻。年夜部門Calendar包括默許一切的時光,而且用戶去消除部門時光。

5、Scheduler:運轉容器,應用SchedulerFactory創立Scheduler實例

2、代碼示例:

1、應用Quartz,須要完成Job接口;

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

2、調劑【比擬簡略,直接看代碼便可以了】

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/

3、Quartz2.2.1設置裝備擺設文件示例

# 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

4、數據庫相干
耐久化須事前在響應數據庫創立Quartz的數據表,在Quartz宣布包外面的docs/dbTables有對應分歧數據庫的SQL劇本

例如,這裡應用的是MYSQL:

數據表字段說明:

  • 表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:檢討距離時光
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved