ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Springboot 整合 xxl-job

2022-07-07 22:03:45  阅读:184  来源: 互联网

标签:Springboot admin 任务 job executor xxlJobSpringExecutor xxl


前言


 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

正文


 

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

 

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

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

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

 

image.png

 

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

 

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

 

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

 

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

 

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

 

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

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

 

下载代码解压出来:image.png

 

IDEA上打开项目:

 

image.png

 

开始实战应用:

 

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

image.png

执行完:

 image.png

 

一.把admin 服务端跑起来

 

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

 

image.png

 

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

 

默认账号 admin

默认密码 123456image.png

 

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

 

 image.pngimage.pngimage.png

 

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

 

image.png

 

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

 

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

image.png

 

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

 

image.png

 

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

 

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

 

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

image.png

 

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

 

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

 

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

 

image.png

 

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

 

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

 

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

 

怎么使用?

 

image.png

 

示例代码:

 

/**

* 示例

*/

@XxlJob("clockInJobHandler")

public void clockInJobHandler() throws Exception {

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

 

}

 

然后把demo 跑起来 ,

 

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

 

image.png

 

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

 

新增对任务的管理 :

 

image.pngimage.pngimage.png

 

任务启动了:

 

image.png

 

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

 

image.png

 

好了该篇就到这吧, 总结一下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,admin,任务,job,executor,xxlJobSpringExecutor,xxl
来源: https://www.cnblogs.com/hanease/p/16456265.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有