国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 14:31:02
字體:
來源:轉載
供稿:網友

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

void execute(JobExecutionContext context)

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

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

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

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

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

二、代碼示例:

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/

三、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: DefaultQuartzSchedulerorg.quartz.scheduler.rmi.export: falseorg.quartz.scheduler.rmi.proxy: falseorg.quartz.scheduler.wrapJobExecutionInUserTransaction: false org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount: 10org.quartz.threadPool.threadPriority: 5org.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.JobStoreTXorg.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegateorg.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.Driverorg.quartz.dataSource.qzDS.URL:jdbc:mysql://localhost:3306/quartzdborg.quartz.dataSource.qzDS.user:rootorg.quartz.dataSource.qzDS.password:123456org.quartz.dataSource.qzDS.maxConnection:10

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

例如,這里使用的是MYSQL:

20163791859291.png (271×235)

數據表字段解釋:

  • 表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:檢查間隔時間
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 嵊州市| 夹江县| 波密县| 安远县| 巴塘县| 双桥区| 湟中县| 泸溪县| 玉溪市| 榆社县| 姜堰市| 望江县| 遵化市| 青铜峡市| 麻栗坡县| 永宁县| 建始县| 遂川县| 伊宁市| 新河县| 东海县| 会东县| 靖边县| 湟源县| 同德县| 遂宁市| 夏河县| 泾阳县| 洛隆县| 常德市| 陆川县| 施秉县| 资源县| 仙桃市| 隆林| 徐州市| 深圳市| 阳谷县| 象州县| 丹江口市|