XXL-JOB定时任务框架(Oracle定制版)
特点
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框架一直在不断更新完善,社区也十分丰富,因此它被众多公司使用。

XXL-JOB定时任务框架(Oracle定制版)的更多相关文章
- Dream_Spark-----Spark 定制版:005~贯通Spark Streaming流计算框架的运行源码
Spark 定制版:005~贯通Spark Streaming流计算框架的运行源码 本讲内容: a. 在线动态计算分类最热门商品案例回顾与演示 b. 基于案例贯通Spark Streaming的运 ...
- Dream_Spark-----Spark 定制版:003~Spark Streaming(三)
Spark 定制版:003~Spark Streaming(三) 本讲内容: a. Spark Streaming Job 架构和运行机制 b. Spark Streaming Job 容错架构和运行 ...
- Python定时任务框架APScheduler 3.0.3 Cron示例
APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务.基 ...
- 巧用svn create patch(打补丁)方案解决定制版需求
最近项目定制版越来越多,维护,同步代码非常费事.以前的思路如下图: 以前的svn目录结构如下图: 这样问题有2个: 若在一个定制包中修复了其他定制包也有的bug,同步更新其他包的代码时,非常费劲+机械 ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- 分布式定时任务框架比较,spring batch, tbschedule jobserver
分布式定时任务框架比较,spring batch, tbschedule jobserver | 移动开发参考书 分布式定时任务框架比较,spring batch, tbschedule jobser ...
- python Aspscheduler 定时任务框架使用
前几日,爬虫基本能爬点东西出来了,现在需要实现定时把数据爬到DB里去,可以使用windows定时任务执行py脚本,但好像不彻底,要做一个纯(jiao)粹(qing)的程序员,定时任务的重任落到了Asp ...
- 中国版 Ubuntu Kylin 14.04 LTS 麒麟操作系统中文版发布下载 (Ubuntu天朝定制版)
中国版 Ubuntu Kylin 14.04 LTS 麒麟操作系统中文版发布下载 (Ubuntu天朝定制版) http://www.iplaysoft.com/ubuntukylin.html
- NSIS:迅雷5.8.6.600自由定制版脚本及下载
原文 NSIS:迅雷5.8.6.600自由定制版脚本及下载 虽然现在迅雷已升级到7.2版本,但作为一款下载工具,我们可能只是需要它的下载功能,所以,体积小资源占用也小的迅雷5便成了我们更好的选择.今天 ...
- 定时任务框架APScheduler学习详解
APScheduler简介 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第 ...
随机推荐
- mysql 循环 例子
mysql 循环生成数据demo: DROP PROCEDURE IF EXISTS test_insert; DELIMITER;; CREATE PROCEDURE test_insert() B ...
- Java中String相关知识
String 1.String概述 String代表字符串,Java程序中所有的字符串文字(例如'abc")都被实现为此类的实例,也就是说,Java中所有的双引号字符串都是String类的对 ...
- JMeter MD5加密 默认小写 转换为大写
出处:https://www.cnblogs.com/scholars-xian/p/11718854.html 使用内置函数加密 1)使用 ${__MD5(123,)} 进行MD5加密(32位小写) ...
- axis2 WebService 请求参数xml格式
方法定义 public class GetBillInfoService { public String getBillList(String xmlData, String temp ){} 传入接 ...
- 一道网红题:Java值传递,答案开始看了不太懂,是不是涉及到了匿名类的实例化?
题目如下:看起来是值传递的考察... public class Test{ public static void main(String[] args){ int a = 10; int b = 10 ...
- 本地项目导入svn托管
- 腾讯云等Linux环境下Redis安装配置
1.下载redis解压安装命令教程 https://www.cnblogs.com/hunanzp/p/12304622.html 2.配置远程连接 修改bind 127.0.0.0 为 bind ...
- curl: (35) SSL connect error的错误
1.先升级nss (Network Security Service, 网络安全服务) yum update nss如果没有nss,则需要安装nss服务 yum install nss 2.更新/安装 ...
- ArcEngine构造多部件
- LeetCode86 分隔链表
idea: 烦死了,这个题一直因为创立的指针为空,或者接入结点方法不对,结果将两个小链表搞混乱了,不过具体思路ok.将小值结点成一组,大值结点成一组,最后在首尾相连,实现起来也比较简单 /** * ...