定时任务使用总结

news/2024/11/23 3:22:07/

定时任务表达式生成工具网站: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();   不能直接使用方法参数接受。


http://www.ppmy.cn/news/25475.html

相关文章

线性代数速览(一)行列式

文章目录行列式&#x1f33b; 行列式的定义&#x1f33c; 行列式的性质&#x1f337; 一些定理&#x1f940; 行列式的计算&#x1f33a; 克莱姆法则行列式 行列式的本质&#xff0c;就是一个数值。 &#x1f33b; 行列式的定义 有三种定义&#xff1a;1、按行展开&#xff…

【学习笔记】DFA的构造

虽然平时做过但是考场上肯定还是不会&#xff0c;不过没事干还是写一下吧 Myhill-Nerode\text{Myhill-Nerode}Myhill-Nerode 定理&#xff1a;给定一个语言LLL&#xff0c;定义在字符串上一个关系为&#xff0c;若对于所有的zzz&#xff0c;xzxzxz在LLL中当且仅当yzyzyz在LLL中…

004:NumPy的应⽤-2

数组的运算 使⽤NumPy 最为⽅便的是当需要对数组元素进⾏运算时&#xff0c;不⽤编写循环代码遍历每个元素&#xff0c;所有的运算都会⾃动的⽮量化&#xff08;使⽤⾼效的、提前编译的底层代码来对数据序列进⾏数学操作&#xff09;。简单的说就是&#xff0c;NumPy 中的数学运…

火山引擎数智平台的这款产品,正在帮助 APP 提升用户活跃度

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 你有没有关注过 APP 给你推送的消息&#xff1f; 出于提升用户活跃度的考虑&#xff0c;APP 会定期在应用内面向用户进行内通推送&#xff0c;推送形式既包括 APP …

小红书用户画像 | 小红书数据平台

小红书的用户画像是小红书品牌营销的必备技能&#xff0c;也是小红书推广种草的一个重要前提。通过对小红书用户画像进行分析&#xff0c;对品牌进行精准营销&#xff0c;实现更高的流量转化。 2022小红书粉丝人群画像 千瓜数据在2022年发布的千瓜活跃用户画像趋势报告中分析了…

Nginx介绍及安装(windows版,Linux版)

目录 一、Nginx介绍 1、Nginx优势 2、Nginx作用 3、部署静态资源 4、代理 5、负载均衡 二、Nginx安装步骤&#xff08;windows版&#xff09; 三、Nginx安装步骤&#xff08;Linux版&#xff09; 1、官网下载安装包&#xff0c;下载完之后上传到Linux系统上 2、在Lin…

指针——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰学习的内容是指针&#xff0c;这次只会讲一些很简单的知识点&#xff0c;更详细的指针知识会在以后的博客中逐步剖析清楚&#xff0c;那么现在&#xff0c;就让我们进入指针的世界吧 指针是什么 指针和指针类型 野指…

JS 动态爱心(HTML+CSS+JS)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…