通用的調度框架:iquartz
通用任務調度框架iquartz提供定時任務的定制化,能夠開發出特定的任務并進行調度,如數據交換、數據處理、文件上傳下載等各類任務,iquartz采用類似tomcat的class加載機制,通過自定義classloader,實現不同任務的依賴隔離,實現各個任務運行的獨立和閉環。iquartz還能夠對每個任務的調度執行進行監控,詳細記錄任務每一次的運行情況,并提供日志接口供用戶使用。
1. 搭建框架的環境
1.1 iquartz + tomcat + mysql
iquartz下載:https://github.com/gx4air/iquartz/tree/master/bin
mysql腳本:https://github.com/gx4air/iquartz/tree/master/docs

mysql數據庫新建數據庫iqrtz,并將iqrtz.sql導入
1.2 IDE+ plugin.jar
IDE:eclipse 或idea
plugin.jar下載:https://github.com/gx4air/iquartz/tree/master/bin/client
2. 開發定制任務
2.1 無狀態任務(參數一次性設置,任務運行中不會改變)
- package datamining.plugin;
- import java.util.Map;
- import org.apache.log4j.Logger;
- import com.tech.dawn.iquartz.plugin.Plugin;
- import com.tech.dawn.iquartz.plugin.PluginResult;
- public class KMeansPlugin implements Plugin {
- private Logger logger = Logger.getLogger(KMeansPlugin.class);
- @Override
- public PluginResult doPlug(Map<String, String> arg0) throws Throwable {
- logger.info("從數據庫查數據");
- logger.info("數據分析");
- logger.info("數據結束,返回任務結果");
- PluginResult pr = new PluginResult();
- pr.setResulst(true);
- return pr;
- }
- }
2.2 有狀態任務(任務運行前設定的參數可能隨著任務的不斷運行而有規律的改變)
- package data.plugin;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.util.Map;
- import org.apache.log4j.Logger;
- import com.tech.dawn.iquartz.plugin.Plugin;
- import com.tech.dawn.iquartz.plugin.PluginResult;
- public class DataMigrationPlugin implements Plugin {
- private Logger logger = Logger.getLogger(DataMigrationPlugin.class);
- @Override
- public PluginResult doPlug(Map<String, String> params) throws Throwable {
- String sourceDriver = params.get("sourceDriver");
- String sourceUrl = params.get("sourceUrl");
- String sourceUser = params.get("sourceUser");
- String sourcePassword = params.get("sourcePassword");
- String rowIndex = params.get("rowIndex");
- logger.info("從數據源取數據,url-->"+sourceUrl);
- logger.info("sourceDriver-->"+sourceDriver);
- Class.forName(sourceDriver);
- Connection conn = DriverManager.getConnection(sourceUrl, sourceUser, sourcePassword);
- logger.info("數據源connection成功:"+conn);
- rowIndex = (Integer.parseInt(rowIndex)+1000)+"";
- params.put("rowIndex", rowIndex);
- logger.info("new rowIndex:"+rowIndex);
- logger.info("返回任務結果");
- PluginResult pr = new PluginResult();
- pr.setParams(params);
- pr.setResulst(true);
- return pr;
- }
- }
所需依賴正常設置在classpath下

注意:開發的任務必須以xxxPlugin命名。
開發好的xxxPlugin.class通過jar命名打包成xxxPlugin.jar
注意:依賴無需打入包中。
3. 使用iquartz對開發好的任務進行調度
訪問/iquartz/index.jsp

4. 對任務的定時器進行監控

5. 查看任務每一次的執行情況

本文由用戶 gx4air 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!