XXL-JOB定時任務框架(Oracle客製化版)

2023-04-13 12:04:26

特點

xxl-job是一個輕量級、易擴充套件的分散式任務排程平臺,能夠快速開發和簡單學習。開放原始碼並被多家公司線上產品使用,開箱即用。儘管其確實非常好用,但我在工作中使用的是Oracle資料庫,因為xxl-job是針對MySQL設計的,所以使用起來需要進行一些魔改。為了方便後人使用,我已經建立了許多SQL和自增序列,並將其整合到了xxl-job-2.3.0版本中,環境已經線上上正常使用了,所以可以放心使用。此外,我還將釘釘群報警機器人整合在了框架中,一旦有任何錯誤報警就會直接鎖定紀錄檔URL,方便快速檢視和處理響應!

xxl-job-2.3.0版本

gitee地址:xxl-job-oracle

專案介紹:SQL檔案在sql-doc中,如果不使用釘釘報警機制,請刪掉DDTalkUtil工具類及其參照。如果使用,則需要申請釘釘報警機器人相關token,相關教學請移步官方地址:自定義機器人接入

自定義機器人接入

申請完成後,請修改相關DDTalkUtil中的***標註,我在這裡還提供了一張表來標識測試環境和生產環境機器人的不同,也有一個欄位表示是否需要提醒。如果您不需要此功能,可以直接刪除。改掉具體如下:

public class DDTalkUtil {

    private static Logger logger = LoggerFactory.getLogger(DDTalkUtil.class);

    private static RestTemplate restTemplate = new RestTemplate();

    public static void toTalk(String jobtitle,String text,long jobid){
        try {
            CrmInterfaceUrlVO crmInterfaceUrlVO = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().getEnv("***");
            logger.info("獲取物件:"+crmInterfaceUrlVO.toString());
            //不提醒
            if ("N".equals(crmInterfaceUrlVO.getUseYn())) {
                return;
            }
            String finalUrl = "https://oapi.dingtalk.com/robot/send?access_token=***";
            JsonObject json = new JsonObject();
            json.addProperty("msgtype","link");
            HttpHeaders headers = new HttpHeaders();
            headers.add("Content-Type", "application/json;charset=UTF-8");
            JsonObject link = new JsonObject();
            link.addProperty("text",text);
            link.addProperty("title",crmInterfaceUrlVO.getName()+jobtitle);
            link.addProperty("messageUrl",crmInterfaceUrlVO.getUrl()+jobid);
            json.add("link",link);
            HttpEntity<String> formEntity = new HttpEntity<String>(json.toString(), headers);
            logger.info(restTemplate.exchange(finalUrl, HttpMethod.POST, formEntity, String.class, (Object) null).getBody());
        }catch (Exception e){
            logger.error("釘釘報警錯誤:{}",e.getMessage());
        }
    }
}

實際上,xxl-job功能非常強大,您還可以根據您的業務場景自定義修改DDTalkUtil工具類來滿足需求。在頁面中點選頁籤即可跳轉到xxl-job的紀錄檔記錄網頁,非常方便和快捷。最終效果如下:


Oracle語句

本博主已經將相關SQL修改完畢,自行在Oracle庫中複製貼上即可。

  1. 執行sql-doc檔案中的table.sql指令碼,使用者預設密碼是admin/123456
  2. 相關xxl-job的教學,移步官網:XXL-JOB,本博主就不多解釋了
  3. 請修改application.properties檔案中的Oracle資料庫連線
spring.datasource.url=jdbc:oracle:thin:@ip:port:**
spring.datasource.username=**
spring.datasource.password=**
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

結語

雖然現在有其他支援Oracle資料庫連線的定時任務框架,但我在使用該專案時並未發現其他好的定時任務框架,所以只能進行大量改動。畢竟,xxl-job框架一直在不斷更新完善,社群也十分豐富,因此它被眾多公司使用。

公眾號