定时任务使用总结

使用Quartz实现定时任务 文章目录前言一、导入Quartz的jar包二、Quartz的整体结构1.创建定时任务对象的Job2.创建执行类3.各个实例之间的关系为总结 前言 使用Quartz实现定时任务 一、导入Quartz的jar包 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1<.. 阅读详情

定时任务表达式生成工具网站: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 {

    @NestedConfigurationProperty
    private XxlJobAdminProperties admin;

    @NestedConfigurationProperty
    private XxlJobExecutorProperties executor;

}
xxl:
  job:
    admin:
      address: http://192.168.56.10:8090/xxl-job-admin
    executor:
      address:
      appname: xxl-job-executor-order
      ip:
      port: 9999
      log-path: /data/applogs/xxl-job/jobhandler
      log-retention-days: 30
      access-token: default_token

特别提醒:在配置文件中配置 xxl-job 参数时,不要配置executor执行器的address 和 ip 这两个属性,自己配置容易出问题,使用默认的策略就好。

配置自定义执行器:

@Slf4j
@Configuration
public class XxlJobConfig {

    @Bean
    public 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();   不能直接使用方法参数接受。

如何使用 Redis 实现定时任务 在本文中,我们介绍了如何使用 Redis 存储和执行定时任务的基本步骤,并提供了使用 Python 连接到 Redis 的示例代码。在本文中,我们介绍了如何使用 Redis 存储和执行定时任务的基本步骤,并提供了使用 Python 连接到 Redis 的示例代码。为了执行定时任务,我们需要一个后台进程来检查 Redis 中的任务并在任务的执行时间到达时触发相应的操作。为了执行定时任务,我们需要一个后台进程来检查 Redis 中的任务并在任务的执行时间到达时触发相应的操作。我们首先获取当前时间戳,然后使用。 阅读详情

相关推荐

SSM项目中使用定时任务总结

SSM项目中使用springMVC自带的定时任务scheduler配置步骤。 1、在spring-mvc.xml配置文件中添加如下代码 在xml中的xmlns上添加: xmlns:task="http://www.springframework.org/schema/task" 在xml中的xis上添加: http://www.springframework.org/schema/t...

✅ Java 开发工程师 1004

xxljob 配置 基本使用

xxljob的doc文件下的db文件中包含sql文件,复制到navicat执行。可以使用 if else 对参数判空,实现对特定人群推送定时任务。对应的日志在xxljob的调度日志界面,操作->执行日志;在xxljob任务管理界面选择新增任务。注意:避免使用@Slf4j 来输出日志。弹框 -> 保存 -> 执行成功。(启动文件内容,注意路径)

m0_61982496的博客 840

从零构建生产级K8s-v1.35.0集群:基于Containerd与Cilium的kubeadm实战指南

本文详细介绍了从零构建生产级K8s-v1.35.0集群的全过程,涵盖环境准备、Containerd配置、Kubernetes组件安装、集群初始化及Cilium网络部署等关键步骤。通过实战经验分享系统调优技巧和常见问题解决方案,帮助读者快速搭建稳定高效的Kubernetes集群。

weixin_28725553的博客 218

xxl-job使用实例

1,先从gitee上拉代码https://gitee.com/xuxueli0323/xxl-job git clonehttps://gitee.com/xuxueli0323/xxl-job.git 或者下载zip解压 2,用idea打开项目,结构如下: 在mysql中执行sql,sql文件位置:doc/db/tables_xxl_job.sql 执行完后,有一个xxl_job的数据库,表结构如上图所示。 接下来修改application.properties的数据库配置...

virtual251的博客 1996

Grok 3国内怎么用?超详细使用指南+实用指令模板

主要是用于快速分析学术论文,提取关键信息,总结研究成果。Analyze the following research paper: [粘贴或上传论文内容]1. Extract key findings, methodologies, and conclusions. (提取主要发现、方法和结论。2. Identify statistical significance and data points. (识别统计显著性和数据点。

Survivor_sl的博客 1万+

RTX 5090配Ubuntu 24.04踩坑记:手把手搞定OpenVLA-OFT环境(附版本避坑清单)

本文详细记录了在RTX 5090显卡和Ubuntu 24.04系统上部署OpenVLA-OFT环境的完整过程,包括驱动安装、CUDA配置、PyTorch版本选择等关键步骤。提供了经过验证的版本组合清单和常见错误解决方案,帮助开发者高效搭建AI开发环境。

weixin_30342209的博客 465

xxl-job定时任务配置应用以及添加到自己已有的springboot项目中实现动态API调用

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。本篇文章主要是对xuxueli的xxl-job做一个简单的配置,以及将其添加到自己已有的项目中进行api调用。

fannan521的博客 6977

uniapp运行钉钉小程序

因项目原因,公司需要在钉钉里面开发小程序。之前用uniapp开发过app,H5,小程序。还真没尝试过钉钉小程序,今天就简单的记录下uniapp运行钉钉小程序中的过程。

YL 2919

Xxljob的使用

xxljob快速接入和参数原理

weixin_51980608的博客 5334

AttributeError: module ‘lib‘ has no attribute ‘X509_V_FLAG_CB_ISSUER_CHECK‘解决方案

本文主要介绍了AttributeError: module ‘lib’ has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK’解决方案,希望能对使用python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 5万+

部署模型:Libtorch使用笔记【Pytorch的C++版本】【把用Pytorch训练好的模型打包保存为.pt格式,使用Libtorch去加载.pt格式模型,在C++工程中去用就好了】

A : Libtorch是pytorch的C++版本,现在的很多大型项目都是用C++写的,想使用训练好的模型,需要通过caffe等方式去集成,比较麻烦。这里pytorch官方提出了Libtorch,我们就可以把pytorch训练好的模型,打包起来,直接在C++工程中去用就好了,相比较caffe等,非常方便!虽然对于许多需要动态性和易迭代性的场景来说,Python是一种合适且首选的语言,但在同样的情况下,Python的这些特性恰恰是不利的。生产环境是一个需要低延迟和有严格部署要求的领域,一般选择C++。

u013250861的博客 2948

xxl-job

xxl-job

IT界的彭于晏的博客 623

面试问题总结——关于OpenCV(一)

整理了一下网上和我面试中遇到的关于OpenCV相关的问题。 其中因为我的简历中有个项目用到了特征点检测相关的知识,所以整理了SIFT/SURF和FLANN。 有些知识点也不深入,对于写的不对的地方,欢迎指正。 关于OpenCV的内容 1.OpenCV中cv::Mat的深拷贝和浅拷贝问题   深拷贝:分配新内存的同时拷贝数据,当被赋值的容器被修改时,原始容器数据不会改变。   浅拷贝:仅拷贝数据,当被赋值容器修改时,原始容器数据也会做同样改变。 OpenCV的Mat时,有几种赋值方式分别为:   深.

boss-dog 1万+

springboot使用定时任务

springboot对Quartz、Task的基本使用

学习笔记 1250

ubuntu-emto-cpa 测试和使用(单核运行)

ubuntu-emto-cpa 测试和使用(单核运行)

qq_45834835的博客 1399

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

学习笔记030——若依框架中定时任务的使用

若依是支持Bean调用、Class类调用。我们重点介绍Bean调用。

code__bee的博客 3324

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

定时任务的使用

定时任务,简要说明就是在指定时间内触发执行某个动作。举个例子而言,譬如我们在朋友生日准时送上生日祝福,那么平时比较繁忙的我们,有时候往往甚至不知道今天是星期几,那么这时候可以让程序帮我们去定时的送上生日祝福。

m0_59562330的博客 293

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot项目【使用@Scheduled注解实现定时任务】

@Scheduled详解

y2736375642的博客 2077

SpringBoot定时任务使用详解

在进行SpringBoot的定时任务使用介绍之前,我觉得有必要向大家说明一下实现定时任务的几种方式。 如果你不想了解其他方式,可跳过第一节。 一、定时任务的几种实现方式 在JAVA开发领域,目前可以通过以下几种方式进行定时任务: (注:因为这篇文章主要介绍在SpringBoot中使用定时任务,所以其他实现方式这里只做简单记录,有兴趣的可以去深入了解) 1、Timer:jdk中自带的...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 3549

使用TimerTask实现定时任务

问题:service在平常的controller中可以用,但是在定时器的run方法中不能用。原因:定时器继承了TimerTask之后,在定时器调用此方法后会直接执行execute方法,来不及执行@Autowired标注进行注入。..._定时任务中不允许调用service。Timer定时器中的service不能用的解决办法_定时任务中不允许调用service-优快云博客。1. 执行run方法的类的实例化,将执行run方法里面的业务代码。3. 该定时任务每隔2秒执行一次。1. 任务是什么,即干什么?

qq_41206014的博客 1501

java定时任务使用

最全整理java中经常使用的定时任务,简单解析以及使用

weixin_38698418的博客 5529

Ubuntu下使用Cron定时任务

Ubuntu下使用Cron定时任务的使用

lmjssjj的专栏 4041

定时任务_使用RabbitMQ实现定时任务

(给DotNet加星标,提升.Net技能)转自:编程玩家cnblogs.com/Erik_Xu/p/10631633.html一、背景工作中经常会有定时任务的需求,常见的做法可以使用Timer、Quartz、Hangfire等组件,这次想尝试下新的思路,使用RabbitMQ死信队列的机制来实现定时任务,同时帮助再次了解RabbitMQ的死信队列。二、交互流程1. 用户创建定时任务2. 往...

weixin_42099987的博客 3682

如何在 Spring Boot 中使用定时任务

在本文中,我们介绍了如何在 Spring Boot 中使用定时任务。我们创建了一个定时任务,并使用 @EnableScheduling 注解启用了定时任务。我们还使用了 ThreadPoolTaskExecutor 来执行任务,并使用 Cron 表达式来指定任务的执行时间。Spring Boot 的定时任务功能非常方便,可以帮助我们快速地实现周期性任务的执行。

it_xushixiong的博客 744

定时任务 apscheduler 简单使用

【代码】定时任务 apscheduler 简单使用。

随便写写 432
上一篇: 支付宝沙箱环境使用详解
下一篇: Sentinel配置Gateway 实现限流
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值