SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能

Java41

定时任务几乎是每个业务系统必不可少的功能,计算到期时间、过期时间等,定时触发某项任务操作。在使用单体应用时,基本使用Spring提供的注解即可实现定时任务,而在使用微服务集群时,这种方式就要考虑添加分布式锁来防止多个微服务同时运行定时任务而导致同一个任务重复执行。
除了使用注解,现在还有一种方式,就是搭建分布式任务平台,所有的微服务注册到分布式任务平台,由分布式任务平台统一调度,这样避免了同一任务被重复执行。这里我们选择使用XXL-JOB作为分布式任务调度平台,XXL-JOB核心设计目标是开发迅速、学习简单、轻量级、易扩展。
使用分布式任务调度平台的优点是不仅避免了相同任务的重复执行,而且使用方便,可以手动执行,并且有详细的调度日志来查看任务的具体执行情况。

[En]

The advantages of using distributed task scheduling platform are not only to avoid repeated execution of the same task, but also to be easy to use, can be executed manually, and have detailed scheduling logs to check the specific implementation of tasks.

XXL-JOB官方架构设计图:

SpringCloud微服务实战——搭建企业级开发框架(四十二):集成分布式任务调度平台XXL-JOB,实现定时任务功能

下面我们按照步骤来介绍,如何结合我们的微服务平台将分布式任务调度平台XXL-JOB集成进来,实现我们需要的定时任务功能。

一、微服务框架整合xxl-job-admin

xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
    :xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
    :xxl-job-executor-sample-frameless:无框架版本;

下载下来的开源包有三个目录:xxl-job-admin、xxl-job-core和xxl-job-executor-samples,顾名思义,xxl-job-admin是分布式任务平台的服务端兼管理台,我们需要部署的也是这个工程,我们可以把整个工程集成到我们的微服务中,统一打包部署;xxl-job-core是公共依赖包,我们其他需要实现定时任务的微服务需要引入这个包来实现定时任务执行器。xxl-job-executor-samples为定时任务执行器的实例代码。

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

nacos 快速入门

外表可是具有欺骗性的。 No victory comes without a price. 凡是成功就要付出代价。 这个快速开始手册是帮忙您快速在您的电脑上,下载、安装并使用 nacos。 Nacos...
Java

我的 web 前端开发技术选择

不使用 mvvm 之类的前端组件,是因为我觉得没有必要。 mvvm 常见的宣传,对我来说没什么吸引力,反而增加了技术的复杂度。 一、Javascript 操作 DOM 慢。我不觉得慢。 二、Javas...
Java

设计模式之适配器模式

本文通过老王使用纸质书籍阅读小王使用电子书籍的故事,详细说明设计模式中的结构型设计模式之适配器模式,分别对对象适配器和类适配器代码实现,最后为了加深理解,会列举适配器设计模式在JDK和Spring源码...
Java

JVM虚拟机类加载机制(一)

类的整个生命周期从加载到虚拟机内存时开始,到卸载时结束。整个生命周期包括七个阶段:加载、验证、准备、解析、初始化、使用和卸载。核查、准备和解决的三个部分统称为连接。[En]The entire lif...
Java

DHCP 动态主机设置协议 分析

在TCP/IP网络中,每个接口都需要一个IP地址、子网掩码和广播地址( IPv6中没有),简单来说就是需要网络配置信息。如果想访问外部网络可以通过DNS获取外部地址,再通过路由间接转发出去。但是在"家...
Java

autoJS自动刷网课

自动刷网课,autoJS代码 vscode Ctrl+shift+p打开命令行,连接手机 f5运行 1.点击当前播放器,获取当前播放总时长与播放进度 2.若当前播放进度不等于00:00且总时长与播放进...
Java

带缓冲的输入/输入流

BufferedInputStream类 与 BufferedOutputStream类 BufferedInputStream类 可以对所有InputStream的子类进行缓冲区的包装,以达到 性能...
Java

Halo 开源项目学习(一):项目启动

项目简介 Halo 是一个优秀的开源博客发布应用,在 GitHub 上广受好评,正好最近在练习写博客,借此记录一下学习 Halo 的过程。 项目下载 前提设置 导入项目 因为 Halo 使用 Grad...