当前位置: 首页 > news >正文

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

image

image

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框架一直在不断更新完善,社区也十分丰富,因此它被众多公司使用。 

相关文章:

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

特点 xxl-job是一个轻量级、易扩展的分布式任务调度平台&#xff0c;能够快速开发和简单学习。开放源代码并被多家公司线上产品使用&#xff0c;开箱即用。尽管其确实非常好用&#xff0c;但我在工作中使用的是Oracle数据库&#xff0c;因为xxl-job是针对MySQL设计的&#xff…...

SpringBoot + ajax 实现分页和增删查改

0目录 1.SpringBoot 2.SpringBoot分页&#xff1b;增删改查 1.SpringBoot分页 创建数据库和表 创建SpringBoot工程&#xff0c;引入springboot下的分页依赖 配置application.yml 实体类 Mapper接口 Mapper.xml Service接口 Service实现类 控制层 测试 加…...

ProxyGenerator-代理类生成器

ProxyGenerator是JDK-sun包下提供的用于生成动态代理类信息的类&#xff0c;其唯一向外透出的是其静态方法-generateProxyClass(…)。 public class ProxyGenerator { ... }学习本篇文章&#xff0c;就是想学习ProxyGenerator如何生成代理类信息的过程。 一、唯一入口-公开静…...

ARM 内存屏障指令

ARM 内存屏障指令 1. dmb (Data Memory Barrier) 数据内存栅栏2. dsb (Data Synchronization Barrier) 数据同步栅栏3. isb (Instruction Synchronization Barrier) 指令同步栅栏4. ARM 内存屏障指令如何选择使用&#xff1f;5. 使用示例5.1. DMB指令示例&#xff1a;5.2. DSB指…...

了解Linux 的 mmap --- 笔记

学习这篇博客&#xff0c;进行了一些归纳Linux下mmap_linux mmap_一个山里的少年的博客-CSDN博客https://blog.csdn.net/qq_56999918/article/details/127070280 >>读取文件 读取文件方法&#xff1a;由操作系统提供的两个方法&#xff0c;read和write来读写文件。 由…...

docker删除容器(步骤详解)

要在Docker中删除容器&#xff0c;需要使用命令docker rm。 下面是详细步骤&#xff1a; 1. 首先&#xff0c;使用docker ps命令查看当前正在运行的容器。这个命令会列出所有正在运行的容器的ID、名称、状态等信息。 如果没有正在运行的容器可以通过docker ps -a 查看当前所…...

boost beast http server 测试

boost beast http client boost http server boost beast 是一个非常好用的库&#xff0c;带上boost的协程&#xff0c;好很多东西是比较好用的&#xff0c;以下程序使用四个线程开启协程处理进入http协议处理。协议支持http get 和 http post #include <boost/beast/cor…...

Android 10.0 系统开启禁用adb push和adb pull传输文件功能

1.使用场景 在进行10.0的系统开发中,在一些产品中由于一些开发的功能比较重要,防止技术点外泄在出货产品中,禁用 adb pull 和adb push等命令 来获取系统system下的jar 和apk 等文件,所以需要禁用这些命令 2.系统开启禁用adb push和adb pull传输文件功能的分析 看了下系统…...

浙大数据结构第七周之07-图4 哈利·波特的考试

基础知识&#xff1a;&#xff08;最短路的前提都是在图中两条边之间的权值非定值&#xff09; &#xff08;一&#xff09;Dijkstra方法 算法实现&#xff1a; …...

vue2-vue项目中你是如何解决跨域的?

1、跨域是什么&#xff1f; 跨域本质是浏览器基于同源策略的一种安全手段。 同源策略&#xff08;sameoriginpolicy&#xff09;&#xff0c;是一种约定&#xff0c;它是浏览器最核心也是最基本的安全功能。 所谓同源&#xff08;即指在同一个域&#xff09;具有以下三个相同点…...

【Paper Reading】DETR:End-to-End Object Detection with Transformers

背景 Transformer已经在NLP领域大展拳脚&#xff0c;逐步替代了LSTM/GRU等相关的Recurrent Neural Networks&#xff0c;相比于传统的RNN&#xff0c;Transformer主要具有以下几点优势 可解决长时序依赖问题&#xff0c;因为Transformer在计算attention的时候是在全局维度进行…...

【rust/入门】windows安装rust gnu环境(折腾)

说在前面 首先说明&#xff0c;我是rust入门选手&#xff0c;之前都是在wsl写rust&#xff0c;突然想在windows下装下rust。windows版本&#xff1a;windows11 22H2原文换源 心路历程 看到教程我陷入了沉默&#xff0c;(官方推荐) 打开Microsoft C Build Tools我开始不解&…...

java面试---字符串相关内容

字符串 1. 什么是Java中的字符串池&#xff08;String Pool&#xff09;&#xff1f;2. String、StringBuilder和StringBuffer之间的区别是什么&#xff1f;3. 如何比较两个字符串的内容是否相等&#xff1f;4、equals和的区别5. String类有哪些常用的方法&#xff1f; 1. 什么…...

MYSQL进阶-事务的基础知识

1.什么是数据库事务&#xff1f; 就是把好几个sql语句打包成一个整体执行&#xff0c;要么全部成功&#xff0c;要么全部失败&#xff01;&#xff01;&#xff01; 事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位&#xff0c;其执 行的结果必…...

【C++】C++面向对象,泛型编程总结篇(封装,继承,多态,模板)|(秋招篇)

文章目录 前言如何理解面向对象&#xff1f;如何理解泛型编程&#xff1f;C面向对象的三大特性是什么构造函数有哪几种&#xff1f;讲一下移动构造函数当我们定义一个类 系统会自动帮我们生成哪些函数&#xff1f;标题讲一下类中三类成员&#xff08;公有私有保护&#xff09;三…...

【Github】作为程序员不得不知道的几款Github加速神器

文章目录 背景推荐1&#xff1a;FastGithub推荐2&#xff1a;dev-sidecar推荐3&#xff1a;Watt Toolkit推荐4&#xff1a;篡改猴插件用户脚本1&#xff09;下载安装-->篡改猴 Tampermonkey 插件2&#xff09;下载安装-->Github 增强 - 高速下载 用户脚本 推荐5&#xff…...

react18之08自定义hook (简单的axios-get、修改浏览器title、localStorage、获取滚动条位置、img转换为base64)

目录 react18之自定义hook ()01&#xff1a;自定义一个 简单的axios hook 发起get请求useHttp.jsx使用useHttp hook效果 02&#xff1a;自定义一个 修改浏览器title hook03&#xff1a;自定义一个 localStorage(获取、存储、移除) hookuseLocalStorage.jsx使用hook效果 04&…...

对CommonJS、AMD、CMD、ES Module的理解

CommonJS 常用于&#xff1a;服务器端&#xff0c;node&#xff0c;webpack 特点&#xff1a;同步/运行时加载&#xff0c;磁盘读取速度快 语法&#xff1a; // 1. 导出&#xff1a;通过module.exports或exports来暴露模块 module.exports { attr1, attr2 } ex…...

JVM之类加载与字节码(二)

3. 编译期处理 什么是语法糖 所谓的 语法糖 &#xff0c;其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中&#xff0c;自动生成 和转换的一些代码&#xff0c;主要是为了减轻程序员的负担&#xff0c;算是 java 编译器给我们的一个额外福利&#xff08;给…...

安装linux操作系统

安装虚拟机的步骤&#xff1a; 安装linux系统 之后开启虚拟机 之后重启&#xff0c;打开虚拟机&#xff0c;登录root账号...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...