輕量級任務調度平臺xqiang-job

在開發過程中,定時任務隨處可見,很多是配合業務功能使用的,任務調度的好,工作纔會甜甜的。

本文主要是介紹,使用實例詳見:傳送門

常見的幾種任務調度方式:

  • Timer(自帶的定時器) ;
  • ScheduledExecutor ;
  • 開源工具包 Quartz ;
  • 開源工具包 JCronTab ;
  • 分佈式任務調度平臺 XXL-job (傳送門)

常見的困擾

  • 項目中寫死執行調度頻率基本上不靈活,無法傳動態參數 ;
  • 部署一個分佈式調度平臺,若數據量沒那麼大,顯得厚重,得有服務器部署也複雜 ;

功能期望

  • 支持手動啓動與停止 ;
  • 支持傳動態參數 ;
  • 支持改時間表達式(調度頻率);

xqiang-job-admin是什麼?

xqiang-job項目是基於springBoot+quartz+ mysql+ layui 實現的定時任務靈活的單體調度平臺。<br />輕鬆實現任務調度。使用簡單,引入一個JAR,新增3張任務相關表接口,功能包含登錄鑑權、用戶管理、任務管理、任務操作日誌。<br />

登錄鑑權

  • 基於Shiro的登錄鑑權
  • 畢竟是核心腳本項目,安全性還是要考慮的。
    在這裏插入圖片描述

首頁統計

  • 任務統計
  • 系統信息
  • 內存信息
    在這裏插入圖片描述

任務管理

  • 實現任務的增刪改
  • 任務的啓動停止
  • 設置任務的動態執行參數等
    在這裏插入圖片描述

人員管理

  • 調度平臺登錄用戶的管理,權限設置等

操作日誌

  • 展示任務操作的記錄,包括任務的啓動,停止,修改 ;
  • 任務修改會記錄修改前後的內容比較;

在這裏插入圖片描述
在這裏插入圖片描述

數據庫表

任務表
project_key-項目KEY作用主要是,表可以複用,也起到了隔離各項目的任務作用
比如有兩個系統,A和B,系統A和B的job是分開的,可以公用一套任務表,設置不同的project_key

CREATE TABLE `scheduled_quartz_job` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `project_key` varchar(50) NOT NULL DEFAULT '' COMMENT '項目KEY',
  `job_class` varchar(80) NOT NULL COMMENT '任務接口類名',
  `job_method` varchar(80) NOT NULL COMMENT '任務方法名',
  `job_arguments` varchar(2048) NOT NULL COMMENT '任務參數',
  `job_group` varchar(80) NOT NULL COMMENT '任務分組',
  `job_name` varchar(80) NOT NULL COMMENT '任務名稱',
  `job_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '任務狀態 1-啓用 2-停用',
  `cron_expression` varchar(80) NOT NULL COMMENT '時間表達式',
  `description` varchar(64) NOT NULL DEFAULT '' COMMENT '任務描述',
  `last_run_timestamp` bigint(20) NOT NULL DEFAULT '-1' COMMENT '最後執行時間戳',
  `create_by` varchar(50) NOT NULL DEFAULT '' COMMENT '創建人ID',
  `create_name` varchar(50) NOT NULL DEFAULT '' COMMENT '創建人名稱',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_by` varchar(50) NOT NULL DEFAULT '' COMMENT '最後修改人ID',
  `update_name` varchar(50) NOT NULL DEFAULT '' COMMENT '最後修改人名稱',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
  `del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '刪除標記 0正常 1-刪除',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_project` (`project_key`) USING BTREE,
  KEY `idx_job_class_method` (`job_class`,`job_method`) USING BTREE,
  KEY `idx_job_name` (`job_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任務表';

任務日誌表

  • 用戶記錄對任務的操作,比如張三在xx時刻新建了任務xx,在某時刻停止了任務。
CREATE TABLE `scheduled_quartz_job_log` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `project_key` varchar(50) NOT NULL DEFAULT '' COMMENT '項目key',
  `job_id` int(11) unsigned NOT NULL COMMENT '任務ID',
  `log_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '日誌類型 1-新增 2-修改 3-啓動 4-停止 5-刪除',
  `log_desc` varchar(32) NOT NULL DEFAULT '' COMMENT '日誌描述',
  `content` varchar(2048) NOT NULL DEFAULT '' COMMENT '日誌內容',
  `ip_address` varchar(128) NOT NULL DEFAULT '' COMMENT 'IP地址',
  `operate_id` varchar(32) NOT NULL DEFAULT '' COMMENT '操作人ID',
  `operate_name` varchar(32) NOT NULL DEFAULT '' COMMENT '操作人名稱',
  `remarks` varchar(255) NOT NULL DEFAULT '' COMMENT '備註',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_job_id` (`job_id`) USING BTREE,
  KEY `idx_ooperate_id` (`ip_address`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任務日誌記錄表';


用戶表

CREATE TABLE `scheduled_quartz_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `project_key` varchar(50) NOT NULL COMMENT '項目Key',
  `username` varchar(32) NOT NULL COMMENT '用戶名',
  `salt` varchar(40) NOT NULL COMMENT '鹽',
  `password` varchar(40) NOT NULL COMMENT '密碼',
  `real_name` varchar(50) NOT NULL DEFAULT '' COMMENT '真實姓名',
  `user_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態 1-啓用;2-停用;3-鎖定',
  `user_type` tinyint(1) NOT NULL DEFAULT '3' COMMENT '用戶類型 1-超級管理員 2-管理員 3-普通用戶',
  `menus` varchar(1024) NOT NULL DEFAULT '' COMMENT '菜單權限集',
  `functions` varchar(1024) NOT NULL DEFAULT '' COMMENT '功能權限集',
  `remarks` varchar(256) NOT NULL DEFAULT '' COMMENT '備註',
  `last_login_timestamp` bigint(20) NOT NULL DEFAULT '-1' COMMENT '最後登錄時間戳',
  `create_by` varchar(50) NOT NULL DEFAULT '' COMMENT '創建人ID',
  `create_name` varchar(50) NOT NULL DEFAULT '' COMMENT '創建人名稱',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_by` varchar(50) NOT NULL DEFAULT '' COMMENT '最後修改人ID',
  `update_name` varchar(50) NOT NULL DEFAULT '' COMMENT '最後修改人名稱',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
  `del_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '刪除標記 0-正常,1-刪除',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_username` (`username`) USING BTREE,
  KEY `idx_project` (`project_key`),
  KEY `idx_real_name` (`real_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='任務管理平臺用戶信息表';

開源地址

傳送門

公衆號
更多精彩內容、編程故事、心得分享,歡迎關注公衆號
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章