定时任务使用总结
定时任务表达式生成工具网站:https://cron.qqe2.com/
定时任务选型:
xxl-job 官方文档:https://www.xuxueli.com/xxl-job/
安装定时任务调度中心 xxl-job-admin
第一步、先导入xxl-job的数据库:
地址:https://gitee.com/xuxueli0323/xxl-job/tree/master/doc/db
修改数据库的用户名和密码并同时开启外部访问权限
docker安装xxl-job-admin 步骤:
拉取镜像
docker pull xuxueli/xxl-job-admin:2.3.1
开放端口
firewall-cmd --zone=public --add-port=8090/tcp --permanent
运行镜像
docker run -d \
--name xxl-job-admin \
-p 8090:8080 \
-e JVM_XMS=128m \
-e JVM_XMX=512m \
xuxueli/xxl-job-admin:2.3.1
创建配置挂载目录
mkdir -p /docker/xxl-job/config/application.properties
mkdir -p /docker/xxl-job/logs
复制配置
docker cp xxl-job-admin:/data/applogs/xxl-job /docker/xxl-job/logs
删除运行中的镜像
docker rm -f xxl-job-admin
完整的运行镜像
docker run -d \
--name xxl-job-admin \
-p 8090:8080 \
-e JVM_XMS=128m \
-e JVM_XMX=512m \
-v /docker/xxl-job/config/application.properties:/application.properties \
-v /docker/xxl-job/logs:/data/applogs \
xuxueli/xxl-job-admin:2.3.1
修改外部映射的配置文件application.properties中的数据源地址配置
访问:http://192.168.56.10:8090/xxl-job-admin
默认账号密码:admin、123456

spring boot项目整合 xxl-job
首先引入依赖:
<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.3.1</version>
</dependency>
安装好xxl-job-admin 定时任务调度中心后,在项目中配置 xxl-job 参数配置 xxl-job 参数,用于创建执行器和连接调度中心,参考如下:
@Getter
@Setter
public class XxlJobAdminProperties {private String address;
}@Getter
@Setter
public class XxlJobExecutorProperties {/*** 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册*/private String appname;/*** 服务注册地址,优先使用该配置作为注册地址 为空时使用内嵌服务 ”IP:PORT“ 作为注册地址 从而更灵活的支持容器类型执行器动态IP和动态映射端口问题*/private String address;/*** 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP ,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和* "调度中心请求并触发任务"*/private String ip;/*** 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9099,单机部署多个执行器时,注意要配置不同执行器端口;*/private Integer port = 9099;/*** 执行器通讯TOKEN [必填]:从配置文件中取不到值时使用默认值;*/private String accessToken = "default_token";/*** 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;*/private String logPath = "logs/applogs/xxl-job/jobhandler";/*** 执行器日志保存天数 [选填] :值大于3时生效,启用执行器Log文件定期清理功能,否则不生效;*/private Integer logRetentionDays = 30;}
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "xxl.job")
public class XxlJobProperties {@NestedConfigurationPropertyprivate XxlJobAdminProperties admin;@NestedConfigurationPropertyprivate XxlJobExecutorProperties executor;}xxl:job:admin:address: http://192.168.56.10:8090/xxl-job-adminexecutor:address:appname: xxl-job-executor-orderip:port: 9999log-path: /data/applogs/xxl-job/jobhandlerlog-retention-days: 30access-token: default_token特别提醒:在配置文件中配置 xxl-job 参数时,不要配置executor执行器的address 和 ip 这两个属性,自己配置容易出问题,使用默认的策略就好。
配置自定义执行器:
@Slf4j
@Configuration
public class XxlJobConfig {@Beanpublic XxlJobSpringExecutor xxlJobSpringExecutor(XxlJobProperties properties) {XxlJobSpringExecutor executor = new XxlJobSpringExecutor();executor.setAdminAddresses(properties.getAdmin().getAddress());executor.setAddress(properties.getExecutor().getAddress());executor.setAppname(properties.getExecutor().getAppname());executor.setIp(properties.getExecutor().getIp());executor.setPort(properties.getExecutor().getPort());executor.setAccessToken(properties.getExecutor().getAccessToken());executor.setLogPath(properties.getExecutor().getLogPath());executor.setLogRetentionDays(properties.getExecutor().getLogRetentionDays());return executor;}@XxlJob("xxlJobHandler")public void xxlJobHandler() {String jobParam = XxlJobHelper.getJobParam();log.info("【xxlJobHandler】 定时任务开始执行,参数为:{}", jobParam);}}上面的配置类 XxlJobConfig 中注入的Bean就是自定义定时任务执行器,执行器下方的方法,如下:
@XxlJob("xxlJobHandler")public void xxlJobHandler() {String jobParam = XxlJobHelper.getJobParam();log.info("【xxlJobHandler】 定时任务开始执行,参数为:{}", jobParam);}这个是一个调度任务,@XxlJob("xxlJobHandler") 注解就可以声明一个调度任务,其中的值 xxlJobHandler 就是调度任务的名称
以上步骤做完先不要启动项目,还需要在xxl-job-admin 调度中心配置执行器和调度任务
准备执行 xxlJobHandler 调度任务
来到 xxl-job-admin 调度中心,首先创建一个执行器,参考如下:

其中 AppName 为执行器名称,要和我们之前在配置文件中配置的执行器名称一致;名称 可以随便写,见名知意即可,注册方式 选择自动注册,选择自动注册后机器地址不用填。

添加完执行器后,再添加调度任务,操作如下:

最后,执行定时任务,效果如下:

需要注意的是,程序中调度任务在取调度中心的定时任务参数时,需要通过 XxlJobHelper 对象获取,例如:String jobParam = XxlJobHelper.getJobParam(); 不能直接使用方法参数接受。
相关文章:
定时任务使用总结
定时任务表达式生成工具网站:https://cron.qqe2.com/定时任务选型:xxl-job 官方文档:https://www.xuxueli.com/xxl-job/安装定时任务调度中心 xxl-job-admin第一步、先导入xxl-job的数据库:地址:https://gitee.com/xux…...
Jira和Confluence Server版终止支持倒计时365天,企业应对策略汇总
本文对Atlassian最新的Server版政策进行了解读,并给出应对方案;同时我们也将国内热门的替代工具与jira进行了比较细致的对比,以及介绍替换的优惠政策等。今天是2023年2月15日,距离 Atlassian 旗下 Jira、Confluence 等系列产品中国…...
GEE学习笔记九十一:栅格影像叠置分析
最近发现好多人都在问一个问题,两张影像如何取其相交区域?其实这个问题简单来讲就是多张栅格影像进行叠加分析。在GEE中栅格影像不像矢量数据那样有直接的函数来做数据分析,需要我们自己手动写一些代码来实现这些操作。要实现这个功能有很多方…...
linux系统编程入门
一、搭建环境 1、安装 Linux 系统(虚拟机安装、云服务器) https://releases.ubuntu.com/bionic/ 2、安装 XSHELL、XFTP https://www.netsarang.com/zh/free-for-home-school/ 3、安装 visual studio code https://code.visualstudio.com/ 4、Linu…...
JS代码安全防护常见的方式
文章目录1. 常量的混淆1.1 十六进制字符串1.2 unicode字符串1.3 字符串的ASCII码混淆1.4 字符串常量加密1.5 数值常量加密2. 增加逆向分析难度2.1 数组混淆2.2 数组乱序2.3 花指令2.4 jsfuck3. 代码执行流程的防护3.1 流程平坦化3.2 逗号表达式4. 其他代码防护方案4.1 eval加密…...
PHP(13)HTTP协议
PHP(13)HTTP协议一、HTTP请求1. 请求行2. 请求头3. 请求体二、HTTP响应1. 响应行2. 响应头三、设置HTTP响应四、模拟HTTP请求一、HTTP请求 1. 请求行 请求行独占一行。形式:请求方式 资源路径 协议版本号 GET /index.php HTTP/1.1 2. 请求…...
基于支持向量机 (SVM) 用php实现预测气温
Windows 10自带的天气应用有一个基于历史数据预测气温的功能,有一定的参考价值。那么如何去实现这一功能呢?本文采用php进行实现。 使用机器学习方法实现预测当日气温的算法需要涵盖许多的步骤,以下是一种基于支持向量机 (SVM) 的算法的简化…...
MySQL(五)
通过索引进行优化 索引基本知识 索引的优点 1、大大减少了服务器需要扫描的数据量2、帮助服务器避免排序和临时表3、将随机io变成顺序io 索引的用处 1、快速查找匹配WHERE子句的行2、从consideration中消除行,如果可以在多个索引之间进行选择,mysql通常会使用找到…...
Linux常用命令2
目录1.查找find(1)普通用法(2)组合用法2.xargs命令3.管道符4.查看文件内容(1)查看两个文件的差别:diff file1 fille2(2)正序查看文件内容cat(3)倒序查看文件内容tac(4)分页查看文件内容more(5)分页查看文件内容less(6)…...
『C/C++养成计划』Visual Studio Code编辑器配置(外观通用型扩展Minmal)
Visual Studio Code编辑器配置(外观&通用型扩展&Minmal)! 文章目录 一. vscode配置外观|通用型扩展1.1. 色彩主题配置扩展(GitHub Theme)1.2. 图标主题扩展(Material Icon Theme)1.3. 代码高亮扩展(better-comments)1.4. 错误警告扩展(error lens)1.5. 执行代码扩展(c…...
设计模式(适配器模式)
设计模式(适配器模式) 第二章 设计模式之适配器模式(Adapter) 一、Adapter模式介绍 适配器模式位于实际情况和需求之间,填补两者之间的差距。 二、示例程序1(使用继承的适配器) 1.示例程序示…...
在基于全志D1s的芒果派麻雀上运行国产开源rt-smart系统
想必RT-Thread系统大家不陌生了,RT-Thread Smart(简称 rt-smart)是基于 RT-Thread 操作系统衍生的新分支,面向带 MMU,中高端应用的芯片,例如 ARM Cortex-A 系列芯片,MIPS 芯片,带 MM…...
【代码随想录训练营】【Day15】第六章|二叉树|层序遍历|226.翻转二叉树|101.对称二叉树
层序遍历 题目详细:LeetCode.102 层序遍历与上一节讲的三种遍历方式有所不同,层序遍历是指按从上到下,从左到右的顺序,逐层地遍历二叉树的节点。 从其节点的遍历顺序上观察,我们可以发现其跟广度优先遍历࿰…...
基于圆展开自适应三边测量算法的室内定位
基于圆展开自适应三边测量算法的室内定位 具有无线通信功能的移动设备的日益普及刺激了室内定位服务的增长。室内定位用于实时定位设备位置,方便访问。然而,由于大量障碍物,与室外定位相比,室内定位具有挑战性。全球定位系统非常适…...
使用中断子系统实现对LED灯的控制
中断顶半部:不允许耗时操作 代码流程: 1、基于字符设备驱动的注册(手动/自动) 2、基于设备树文件的自定义完成(myled, myirq) 2、基于GPIO子系统实现led的点亮(流水/测试文件控制) 3、中断子系统操作流程 …...
《爆肝整理》保姆级系列教程python接口自动化(十五)--参数关联接口(详解)
简介 我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jenkins-Crumb继续操作这个新建的任务。 …...
【JDK8】MyBatis源码导入Idea
1.背景 为了更好的将MyBatis的开发设计思想带到日常开发工作,将MyBatis源码导入到本地开发工具中(idea)。我自己在导入的时候碰到几个问题,耽误了自己一点时间,这里我把它们记下来,后边的小伙伴可不要踩我的坑。 Java版本&#x…...
三层交换机DHCP中继
关于中继,我们需要有一个对比。正常情况下我们是不是需要配置单臂路由然后开启DHCP地址池,然就设置网段网关以及DNS。这样的话考验 的其实是命令功底。但是为了方便,我们 可以添加服务器,将这个服务给到服务器去配置,这…...
C++之RALL机制
RALL是Resource acquisition is initialization的缩写,意思是“资源获取即初始化”,其核心思想是利用C对象生命周期的概念来控制程序的资源。它的技术原理很简单,如果希望对某个重要资源进行跟踪,那么创建一个对象,并将…...
回溯算法章末总结
组合问题的特点 (1)abba 选中a之后,就不再选了 (2)找出所有的组合 (长度可以不相等) 组合问题模板 做回溯题步骤 (0)判断问题类型 (1)树状图 …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
