特點
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庫中複製貼上即可。
- 執行sql-doc檔案中的table.sql指令碼,使用者預設密碼是admin/123456
- 相關xxl-job的教程,移步官網:XXL-JOB,本博主就不多解釋了
- 請修改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框架一直在不斷更新完善,社群也十分豐富,因此它被眾多公司使用。