定时任务使用总结
定时任务表达式生成工具网站: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)树状图 …...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
