首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 定時任務實戰:基於 Quartz 框架的完整配置與部署指南

     編輯:Java 相關知識

前言:Quartz 實現企業級定時調度

Quartz 是 Java 生態中功能最強大、應用最廣泛的開源任務調度框架,支持複雜的 Cron 表達式、集群部署、持久化、監聽器等企業級特性。本文通過六步驟完整演示:從任務定義、業務邏輯、初始化配置、Web 容器啟動註冊、時間觸發配置到 Cron 表達式詳解,構建一個可生產部署的定時任務體系。

步驟一:定義任務類(實現 Job 接口)

任務類定義

核心:實現 org.quartz.Job 接口,重寫 execute(JobExecutionContext context) 方法,編寫業務邏輯。可通過 context.getMergedJobDataMap() 獲取傳遞參數。

步驟二:編寫具體業務操作類

業務操作類

將具體業務邏輯封裝在獨立類中,Job 類中調用,符合單一職責原則,便於測試與維護。

步驟三:定義初始化配置類

初始化配置類

核心邏輯:

  1. 創建 SchedulerFactory → 獲取 Scheduler;
  2. 定義 JobDetail(綁定 Job 類、參數);
  3. 定義 Trigger(綁定 Cron 表達式、啟動/結束時間);
  4. 調用 scheduler.scheduleJob(jobDetail, trigger) 註冊;
  5. 啟動 scheduler.start()。

步驟四:Web 容器啟動註冊

web.xml 配置

在 web.xml 中配置 ServletContextListener,容器啟動時調用初始化類:

<listener>
    <listener-class>com.yourpackage.QuartzInitListener</listener-class>
</listener>

步驟五:定義具體觸發時間

觸發時間配置

可在屬性文件或代碼中配置 Cron 表達式,如:

# 每天凌晨 2:00 執行
quartz.cron.expression=0 0 2 * * ?

步驟六:Quartz Cron 表達式詳解

Cron 表達式

標準 Cron 表達式:秒 分 時 日 月 星期 [年](7 位,年可選)。

字段允許值特殊字符
秒0-59, - * /
分0-59, - * /
時0-23, - * /
日1-31, - * ? / L W
月1-12 / JAN-DEC, - * /
星期1-7 / SUN-SAT, - * ? / L #
年(可選)1970-2099, - * /

特殊字符含義:

  • *:所有值;?:不指定值(日/星期二擇一);
  • -:範圍;,:列舉;/:增量(如 0/15 表示每 15 秒);
  • L:最後(日:月最後一天;星期:最後一周即周六);
  • W:最近工作日(僅日字段);#:第 N 個星期幾(如 6#3 表示第 3 個周五)。

常用示例

  • 0 0 2 * * ?:每天 02:00:00
  • 0 0/5 * * * ?:每 5 分鐘
  • 0 0 10,14,16 * * ?:每天 10:00、14:00、16:00
  • 0 0/30 9-17 * * MON-FRI:工作日 9-17 點每 30 分鐘
  • 0 0 0 1 * ?:每月 1 號 00:00
  • 0 0 0 ? * 6L:每月最後一個周五 00:00

進階建議

  • 生產環境建議使用 JDBC-JobStore 持久化任務,防止重啟丟失;
  • 集群模式下配置 org.quartz.jobStore.isClustered=true,需共享數據庫;
  • 監聽器監控任務執行狀態、異常、耗時,接入監控告警體系;
  • 任務邏輯應冪等設計,防止重複執行產生副作用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved