前言


很久很久以前写过好几篇关于定时任务的使用系列的文章:

这一篇是最简单的,就是单纯跑跑定时任务,那你看这篇就行,没必要用xxljob(因为xxljob要跑服务端,然后自己服务作为客户端接入):

文章 使用@Scheduled 简单实现定时任务

然后这一篇是开始打开封装的壳子,开始可以自己手动配置地去使用定时任务了:

文章 使用Quartz定时器执行多个定时任务 配置篇

然后再继续打开封装的壳子,可以更加自由地去使用定时任务,也就是动态调度:

文章 Quartz定时任务的动态调度使用,实战详解

今天,带来的xxljob的使用, 可能很多人已经会用(最近挺多应届生问到这个的使用),所以我还是选择写一下整合xxl job 的使用入门篇。

正文


在什么都没开始的时候,我们看看springboot 使用 xxljob,需要有些什么,简图:

admin :理解为 server服务端 ,负责提供xxljob相关功能

demo: 理解为 client客户端,你自己想用xxljob的服务

HTML页面, 可视化操作,任务调度。

demo负责通过代码叙述自己的定时任务要做的东西, admin管不着。

admin管什么,可以管 这些任务怎么执行,怎样执行。怎么管? 在HTML页面上管 (其实也有api方式,该篇不讲)。

看到这里,新手的看客是否觉得好麻烦,又要写server端代码,又要接入,而且还得写前端HTML页面?

啥玩意,不搞了。 (是的,正常要是这样的话我也不搞)

如果说这一切都是开箱即用,这样你觉得可以接受吗?

代码GITEE地址(不是我写的,xuxueli 都全部写好了,我之所以这么引出来,是怕你们只能接受我,接受不了别人) :

https://gitee.com/xuxueli0323/xxl-job

下载代码解压出来:

IDEA上打开项目:

开始实战应用:

先创建数据库 (sql 是现成的)

执行完:

一.把admin 服务端跑起来

application.properties文件,注意红色框的几个地方(端口我自己改了个自己喜欢的8961,大家随意就行)改完直接运行:

然后去HTML管理界面看下,http://localhost:8961/xxl-job-admin:

默认账号 admin

默认密码 123456

PS: 如果你忘记密码了怎么办?

跑偏了,继续,登录成功可以进到任务调度中心界面:

到这,先不用管其他的,我们接下来第二步。

二.接入xxljob,开始使用xxljob实现定时任务

红色框的这几个点,比较重要:

既然要接如xxl job ,那么 admin 的接入地址,肯定是要对应的:

xxl.job.admin.addresses=http://127.0.0.1:8961/xxl-job-admin

executor 至关重要, 这个就是 任务执行器, 每个job任务都是需要执行器来执行的,就像子弹和枪的关系 。

这个executor ,简单的理解为每个接入的demo服务对应一个就行。

这个可视化界面是随时可以新增、删除、修改的, 但是怎么操作得对应起来才能正常运行。

当然了,直接改数据库表数据也行:

PS: 如果我不想某个任务执行了, 那么把相关得执行器干掉就行。

子弹没有对应型号的枪,能打吗?

改完配置,就已经接入成功了其实。

怎么使用?

 

示例代码:

/**

* 示例

*/

@XxlJob("clockInJobHandler")

public void clockInJobHandler() throws Exception {

logger.info("clockInJobHandler 正在执行打卡校验" + new Date());

}

然后把demo 跑起来 ,

控制台的日志可以看到,好多个任务已经都注册到admin去了 :

代码都写好了, 那么就是 在HTML页面 操作调度一下就可以。

新增对任务的管理 :

任务启动了:

可以看到控制台,定时任务在定时执行:

好了该篇就到这吧, 总结一下springboot 快速整合 xxl-job 需要做的事情:

1. 下载开源的代码

2.用开源提供的sql创建数据库

3.改下admin的配置文件,运行项目

4.改下自己服务的配置文件,接入xxl -job

5.用注解@XxlJob 写下定时任务实现的代码

6.去HTML管理界面,创建一下 执行器、任务器

1.xxjob环境配置
1.1源码下载
xxjob源码下载传送门

1.2初始化数据库
在xxl-job-2.0.1\doc\db\tables_xxl_job.sql执行这个sql文件到

1.3项目中配置数据源

1.3启动项目
登录http://localhost:8080/xxl-job-admin/jobinfo 配置成功

2.项目中引入xxjob
2.1导入xxjob依赖
<!-- xxl-job-core -->

<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.1</version>
</dependency>
1
2
3
4
5
6
7
2.1application.yaml中配置
xxl-job:
#xxjob的地址
address: 127.0.0.1:8888/xxl-job-admin/
#执行器的名字
executor-appname: xx-job-ext
#注册的地址 自动注入可以不写
executor-ip:
executor-port: 8081
accessToken:
executor-logpath: D:/tmp
executor-logretentionday: 1
1
2
3
4
5
6
7
8
9
10
11
package com.zrp.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
* @author 赵锐鹏
* @date 2021/11/3 0003
*/
@Configuration
public class XxJobConfig {
@Value("${xxl-job.address}")
private String adminAddresses;

@Value("${xxl-job.executor-appname}")
private String appName;

@Value("${xxl-job.executor-ip}")
private String ip;

@Value("${xxl-job.executor-port}")
private int port;

@Value("${xxl-job.accessToken}")
private String accessToken;

@Value("${xxl-job.executor-logpath}")
private String logPath;

@Value("${xxl-job.executor-logretentionday}")
private int logRetentionDays;

@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;

}
}

Springboot 整合 xxl-job的更多相关文章

  1. springboot整合xxl-mq学习笔记

    首先xxl-mq是大神xuxueli开发的一个消息中间件框架: 与springboot整合过程: <?xml version="1.0" encoding="UTF ...

  2. springboot整合xxl-job分布式定时任务【图文完整版】

    一.前言 定时任务有很多种,有一些大的框架也有一些简单的实现. 比如常见的: JDK的Timer和TimerTask Quartz异步任务调度框架 分布式定时任务XXL-JOB Spring Task ...

  3. spring-boot整合mybatis(1)

    sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot- ...

  4. SpringBoot整合Mybatis之项目结构、数据源

    已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...

  5. springboot整合mq接收消息队列

    继上篇springboot整合mq发送消息队列 本篇主要在上篇基础上进行activiemq消息队列的接收springboot整合mq发送消息队列 第一步:新建marven项目,配置pom文件 < ...

  6. springboot整合mybaits注解开发

    springboot整合mybaits注解开发时,返回json或者map对象时,如果一个字段的value为空,需要更改springboot的配置文件 mybatis: configuration: c ...

  7. SpringBoot整合Redis、ApachSolr和SpringSession

    SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...

  8. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  9. SpringBoot整合Kafka和Storm

    前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接 ...

  10. SpringBoot整合SpringCloud搭建分布式应用

    什么是SpringCloud? SpringCloud是一个分布式的整体解决方案.SpringCloud为开发者提供了在分布式系统中快速构建的工具,使用SpringCloud可以快速的启动服务或构建应 ...

随机推荐

  1. Discuz7.2 XML漏洞

    Discuz7.2 导入插件数据可以生成一句话木马,直接getshell. 姿势:版主的"管理中心" => "插件" => "导入&quo ...

  2. Minio安装以及使用

    Minio介绍 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器/虚拟机镜像等,而一个对象文 ...

  3. c语言小练习——字符串长度、拷贝、拼接、比较

    /* 使用c语言知识实现下面程序: 1,实现strlen函数的功能 2,实现strcpy函数的功能 3,实现strcat函数的功能 4,实现strcmp函数的功能 不允许使用已有的str函数*/ 1 ...

  4. Codeforces 4 A-D

    题面 A B C D 难度:红 橙 橙 黄 题解 A 题目大意: 判断一个正整数 \(w\) 能否表示成两个正偶数之和. 解题思路: 考虑分类讨论 \(w\). 对于 \(1\) 和 \(2\),显然 ...

  5. 2023年10月,红米(小米)note 8 pro 优化记

    看了红米的note 13 pro和note 12 turbo的参数和价格后,我决定下单买个note8 pro的手机壳,确实有新手机的感觉了. 我note8 pro手机参数如下 MIUI 12.0.5 ...

  6. 答题判题程序题目集 1~3 的总结性 Blog

    前言 1.1 题目集概述 答题判题程序 - 1: 字符串解析:题目内容和答题内容都是按照特定格式给出的字符串,程序需要能正确地拆分和解析这些字符串,然后进行匹配. 对象和类的使用:为了更好地管理题目和 ...

  7. ElementUI ---- dialog点击取消后蒙遮层不消失

    场景: 页面A打开了 dialog, 然后点击 页面A dialog 的按钮 跳转到 页面B,并且打开页面B的 dialog 但是页面B的 dialog 关闭后,蒙遮层并没消失(已经设置了 :appe ...

  8. 最全ECharts 实战大全(速记版+资源)

    hello,大家好,我是程序员海军,公众号已经快一年多没更新了,没更新的这段时间,我去哪了呢.这两年经历了很多事情,主要情感上占据大部分时间, 从失恋 - 谈对象 - 再失恋. 言归正传,近期我负责的 ...

  9. 移动端自动化之uiautomator2

    github: https://github.com/openatx/uiautomator2 [安装] pip3 install -U uiautomator2# 安装UI Inspector -- ...

  10. git 推送代码到多个 远端仓库

    业务场景 在开发代码时,有时希望将代码推送到两个远端仓库. 实现方法 git remote add origin giturl1 git remote add backup giturl2 git p ...