前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XXL-JOB定时任务框架(Oracle定制版)

XXL-JOB定时任务框架(Oracle定制版)

原创
作者头像
努力的小雨
修改2024-04-28 09:53:19
1280
修改2024-04-28 09:53:19
举报
文章被收录于专栏:灵墨AI探索室灵墨AI探索室

特点

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中的***标注,我在这里还提供了一张表来标识测试环境和生产环境机器人的不同,也有一个字段表示是否需要提醒。如果您不需要此功能,可以直接删除。改掉具体如下:

代码语言:java
复制
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的日志记录网页,非常方便和快捷。最终效果如下:

image
image
image
image

Oracle语句

本博主已经将相关SQL修改完毕,自行在Oracle库中复制粘贴即可。

  1. 执行sql-doc文件中的table.sql脚本,用户默认密码是admin/123456
  2. 相关xxl-job的教程,移步官网:XXL-JOB,本博主就不多解释了
  3. 请修改application.properties文件中的Oracle数据库连接
代码语言:yaml
复制
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框架一直在不断更新完善,社区也十分丰富,因此它被众多公司使用。

<img src="https://images.cnblogs.com/cnblogs_com/guoxiaoyu/1546113/o_230407095715_chitu_0.png" width = "250" height = "250" alt="公众号" align="center" />

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特点
  • xxl-job-2.3.0版本
    • 自定义机器人接入
      • Oracle语句
      • 结语
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档