当前位置: 首页 > news >正文

SpringBoot整合xxl-job详细教程

SrpingBoot整合xxl-job,实现任务调度

  • 说明
  • 调度中心
  • 执行器
  • 调试
  • 整合SpringBoot

说明

  1. Xxl-Job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
  2. Xxl-Job有两个核心,一个调度中心,一个执行器,需要同时部署才行。

调度中心

1、进入官网地址gitee,复制连接拉取程序。

在这里插入图片描述

2、IDEA工具导入项目,setttings配置可用maven

在这里插入图片描述

3、项目结构的doc/db/tables_xxl_job.sql文件,运行到MySql,创建数据库和表。

4、修改xxl-job-admin调度中心里面配置文件。这里不是邮箱的登录密码,是邮箱的授权码,首页>>设置>>账号下申请,spring.mail.password = POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务授权码
在这里插入图片描述
在这里插入图片描述

5、启动xxl-job-admin项目,访问http://localhost:8080/xxl-job-admin,用户名:admin,密码:123456,调度中心部署完成。

在这里插入图片描述

执行器

1、创建测试类 Test.java,启动项目

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Date;@Component
public class Test {private static Logger logger = LoggerFactory.getLogger(Test.class);/*** 1、简单任务示例(Bean模式)*/@XxlJob("testJobHandler")public ReturnT<String> demoJobHandler(String param) throws Exception {System.out.println(new Date() + "Test Xxl-Job~");return ReturnT.SUCCESS;}
}

在这里插入图片描述
2、配置说明

# 服务端口
server.port=8081# 日志配置
logging.config=classpath:logback.xml# 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。
# 执行器将会使用该地址进行"执行器心跳注册""任务结果回调"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin# xxl-job授权,需与调度中心一致,默认default_token
xxl.job.accessToken=default_token# xxl-job注册到调度中心名称
xxl.job.executor.appname=xxl-job-executor-sample# 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
# 从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=# 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;
# 地址信息用于 "执行器注册""调度中心请求并触发任务";
xxl.job.executor.ip=# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
# xxl-job 日志文件路径
xxl.job.executor.logpath=D:/xxlJob
### xxl-job 日志保存日期
xxl.job.executor.logretentiondays=30

调试

一、自动注册上执行器信息。

在这里插入图片描述

二、任务管理新增任务、保存。

在这里插入图片描述

三、控制台看代码语句输出,任务调度成功。如果无打印,检查报错或者邮箱推送信息排查。

在这里插入图片描述

整合SpringBoot

1、maven项目pom.xml添加

        <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.0</version></dependency>

2、拷贝XxlJobConfig到新建项目使用


import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** xxl-job config**/
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.appname}")private String appname;@Value("${xxl.job.executor.address}")private String address;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}

3、主要学习@XxlJob()注解的使用即可

到此结束,感谢浏览到最后,有问题可用留言交流!

相关文章:

SpringBoot整合xxl-job详细教程

SrpingBoot整合xxl-job&#xff0c;实现任务调度说明调度中心执行器调试整合SpringBoot说明 Xxl-Job是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。Xxl-Job有…...

【MySQL--04】数据类型

文章目录1.数据类型1.1数据类型分类1.2数值类型1.2.1tinyint类型1.2.2bit类型1.2.3小数类型1.2.3.1 float1.2.3.2 decimal1.3字符串类型1.3.1 char1.3.2 varchar1.3.3char和varchar的比较1.4日期和时间类型1.5 enum和set1.5.1 enum1.5.2 set1.5.3 示例1.数据类型 1.1数据类型分…...

git 将其它分支的文件检出到工作区

主要是使用如下命令&#xff1a; git checkout [-f|--ours|--theirs|-m|--conflict<style>] [<tree-ish>] [--] <pathspec>…​覆盖与 pathspec 匹配的文件的内容。当没有给出<tree-ish> (通常是一个commit)时&#xff0c;用 index 中的内容覆盖工作树…...

人工智能的最大危险是什么?

作者&#xff1a;GPT(AI智学习) 链接&#xff1a;https://www.zhihu.com/question/592107303/answer/2966857095 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 首先&#xff1a;人工智能为人类带来了很多益处&…...

rk3568点亮E-ink

rk3568 Android11/12 适配 E-ink “EINK”是英语ElectronicInk的缩写。翻译成中文为“电子墨水”。电子墨水由数百万个微胶囊(Microcapsules)所构成&#xff0c;微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子&#…...

如何将Springboot项目通过IDEA打包成jar包,并且转换成可执行文件

首先在IDEA打开你的项目&#xff0c;需要确认项目可以正常运行&#xff0c;然后点击页面右侧的Maven,运行Lifecycle下的package, 此时在项目的target目录下就可以看到一个jar包 这个时候你可以在jar包所在目录下执行cmd窗口&#xff0c;运行 java -jar campus-market-0.0.1-S…...

总结:网卡

一、背景 经常听到eth0&#xff0c;bond0这些概念&#xff0c;好奇他们的区别&#xff0c;于是有了此篇文章记录下。 二、介绍 网卡&#xff1a;即网络接口板&#xff0c;又称网络适配器或NIC (网络接口控制器)&#xff0c;是一块被设计用来允许计算机在计算机网络上进行通讯…...

Java这么卷,还有前景吗?

“Java很卷”、“大家不要再卷Java了”&#xff0c;经常听到同学这样抱怨。但同时&#xff0c;Java的高薪也在吸引越来越多的同学。不少同学开始疑惑&#xff1a;既然Java这么卷&#xff0c;还值得我入行吗&#xff1f; 首先先给你吃一颗定心丸&#xff1a;现在选择Java依然有…...

后端简易定时任务框架选择(Python/Go)--gocron

文章目录前言实现后语前言 在使用Python的web框架中&#xff0c;包括flask/Django&#xff0c;其中大量用到celery&#xff1b;celery作为异步任务使用的多&#xff0c;同时也会用celery来跑些定时任务&#xff0c;比如每晚定时跑脚本、跑数据统计等闲时任务。但随着任务量的增…...

【GStreamer学习】之GStreamer基础教程

目标 没有什么比在屏幕上打印出“Hello World”更能获得对软件库的第一印象了&#xff01; 但是由于我们正在学习多媒体框架&#xff0c;所以我们将输出“Hello World&#xff01;”改为播放视频。 不要被下面的代码量吓到&#xff1a;只有 4 行是真正需要的&#xff0c; 其…...

各类Round-Robin总结,含Verilog实现

1. Fixed Priority Arbitrary 固定优先级就是指每个req的优先级是不变的,即优先级高的先被处理,优先级低的必须是在没有更高优先级的req的时候才会被处理。所以转化为数学模型就是找出req序列中第一个为1的位置,然后将其转换为onehot。 例如: req[3:0] = 4b1100 ==> g…...

《软件设计师-知识点》

1、指令流水线 &#xff08;一&#xff09;一条指令的执行过程可分为三个阶段&#xff1a;取指、分析、执行。 取指&#xff1a;根据PC&#xff08;程序计数器&#xff09;内容访问主存储器&#xff0c;取出一条指令送到IR&#xff08;指令寄存器&#xff09;中。 分析&…...

mysql 同义词_数据库中的同义词synonym

一、Oracle数据只有一个实例(简单理解就是Oracle 只能建立一个数据库&#xff0c;不像MySQL&#xff0c;它下面可以创建N个库)&#xff0c;那么Oracle是根据用户灵活去管理的&#xff1b;这点读起来、理解 起来也不那么难&#xff0c;但是除非自己亲自实现一把才理解深入点&…...

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…...

数据结构——排序(4)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月12日 内容&#xff1a;数据结构排序内容讲解 目录 前言&#xff1a; 1.快速排序中的递归&#xff1a; 2.小区间优化&#xff1a; 3.递归改非递归&#xff1a; 4.归并排序&#xff1a; 5.归并排序的非递归形式&…...

C++13:搜索二叉树

目录 搜索二叉树概念 模拟实现搜索二叉树 插入函数实现 插入函数实现&#xff08;递归&#xff09; 查找函数实现 删除函数实现 删除函数实现&#xff08;递归&#xff09; 中序遍历实现 拷贝构造函数实现 析构函数实现 赋值重载 我们在最开始学习二叉树的时候&#xff0c;…...

【从零开始学Skynet】基础篇(五):简易聊天室

在游戏中各玩家之间都可以进行聊天之类的交互&#xff0c;在这一篇中&#xff0c;我们就来实现一个简易的聊天室功能&#xff0c;这在上一篇代码的基础上很容易就能实现。1、功能需求 客户端发送一条消息&#xff0c;经由服务端转发&#xff0c;所有在线客户端都能收到&#xf…...

HDU - 2089 不要62(数位DP)

题目如下&#xff1a; 杭州人称那些傻乎乎粘嗒嗒的人为 626262&#xff08;音&#xff1a;laoer&#xff09;。 杭州交通管理局经常会扩充一些的士车牌照&#xff0c;新近出来一个好消息&#xff0c;以后上牌照&#xff0c;不再含有不吉利的数字了&#xff0c;这样一来&#x…...

网络安全与防御

1. 什么是IDS&#xff1f; IDS(入侵检测系统)&#xff1a;入侵检测是防火墙的合理补充&#xff0c;帮助系统对付网络攻击&#xff0c;扩展了系统管理员的安全管理能力&#xff0c;提高了信息安全基础结构的完整性。主要针对防火墙涉及不到的部分进行检测。 入侵检测主要面对的…...

【DT】蒸脱机的结构和工作原理

DT蒸脱机的结构和工作原理什么是DTDT结构图工作过程什么是DT DT 蒸脱机&#xff08;DesolventazationerToaster&#xff09;&#xff0c;根据英文名可以看出来&#xff0c;他的作用是脱溶、烘烤。用于蒸脱湿豆粕中的溶剂。 大豆油生产工艺有2种&#xff1a;压榨油的加工工艺是…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...

linux设备重启后时间与网络时间不同步怎么解决?

linux设备重启后时间与网络时间不同步怎么解决&#xff1f; 设备只要一重启&#xff0c;时间又错了/偏了&#xff0c;明明刚刚对时还是对的&#xff01; 这在物联网、嵌入式开发环境特别常见&#xff0c;尤其是开发板、树莓派、rk3588 这类设备。 解决方法&#xff1a; 加硬件…...

PostgreSQL 对 IPv6 的支持情况

PostgreSQL 对 IPv6 的支持情况 PostgreSQL 全面支持 IPv6 网络协议&#xff0c;包括连接、存储和操作 IPv6 地址。以下是详细说明&#xff1a; 一、网络连接支持 1. 监听 IPv6 连接 在 postgresql.conf 中配置&#xff1a; listen_addresses 0.0.0.0,:: # 监听所有IPv4…...

Java编程中常见的条件链与继承陷阱

格式错误的if-else条件链 典型结构与常见错误模式 在Java编程中,if-else条件链是一种常见的多条件处理模式,其标准结构如下: if (condition1) {// 处理逻辑1 } else if (condition2) {// 处理逻辑2 } else...

OpenAI技术路线急转:从TypeScript到Rust的Codex CLI重构内幕

目录 前言&#xff1a;OpenAI的技术抉择引发业界思考 Codex CLI&#xff1a;OpenAI的终端AI编程利器 语言抉择的戏剧性反转&#xff1a;从TypeScript到Rust Rust重写的四大技术动因 1. 零依赖部署&#xff1a;消除环境配置痛点 2. 内存安全与沙箱隔离 3. 性能的全面碾压 …...