在现代软件开发中,定时任务的管理和调度是一个至关重要的方面。为了解决这个问题,XXL-Job(以下简称 XXL)作为一种分布式任务调度平台应运而生。本文将介绍 XXL-Job 的基本概念、特点以及如何使用它来管理和调度定时任务。
XXL-Job 是一款开源的、分布式的任务调度平台,旨在简化和优化定时任务的管理和执行。它提供了可视化的任务管理界面,支持动态调度和监控任务的执行情况。XXL-Job 基于开源的分布式协调服务 ZooKeeper 构建,确保系统的稳定性和可靠性。
XXL-Job 使用分布式架构,可以水平扩展,适应大规模的任务调度需求。它通过 ZooKeeper 实现分布式协调,确保任务的高可用性和容错性。
XXL-Job 提供了直观的可视化管理界面,使用户能够方便地创建、编辑和监控任务。通过界面,用户可以清晰地了解任务的执行状态、日志信息等。
支持动态添加、修改和删除任务,无需重启应用。这使得任务的管理更加灵活,可以根据业务需求随时调整任务的执行策略。
XXL-Job 支持多种编程语言,包括 Java、Python 等。这使得开发人员能够使用熟悉的编程语言编写任务,提高了开发效率。
首先,您需要在系统中安装 XXL-Job 的执行器和调度中心。执行器负责实际执行任务,调度中心负责管理和调度任务。
通过 XXL-Job 的可视化管理界面,您可以轻松地创建和配置定时任务。指定任务的执行方式、参数以及触发条件。
配置文件内容:
xxl:
job:
accessToken: xxljob_access_token
admin:
addresses: http://192.168.1.162:8080/xxl-job-admin
executor:
ip:
port: 9900
logpath: c:/logs/xxl-job/jobhandler
appname: hsoa
logretentiondays: -1
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配置
* <p>
* 1、先搭建xxl-job服务,修改application.properties中的数据库和报警邮件地址;
* <p>
* 2、http://IP:PORT/xxl-job-admin打开,默认用admin、123456登录;
* <p>
* 3、配置执行器管理,输入AppName为nacos config配置的:xxl.job.executor.appname的value;
* <p>
* 4、配置任务管理,选择上一步的执行器,JobHandler为微服务中的TestHandler中的@XxlJob(value = "demoJobHandler"),再配置Cron表达式,然后保存并启动;
* <p>
* 5、微服务配置:引入依赖;
* <p>
* 6、配置XxlJobConfig;
* <p>
* 7、新建TestHandler参考demo;
*
* @author Administrator
*/
@Configuration
public class XxlJobConfig {
private static Logger log = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
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;
private int logRetentionDays = -1;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.info("xxl-job配置初始化……");
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;
}
XXL-Job 提供了丰富的监控功能,您可以实时查看任务的执行状态、日志信息等。这有助于快速定位和解决任务执行过程中的问题。
以下是一个使用 XXL-Job 执行器执行的简单任务的示例代码:
/**
* 定时查询告警提醒
*
* @author hhh
* @date 2023/11/7
*/
@Component
public class DutyPrompt {
@XxlJob(value = "dutyPrompt")
public void dutyPrompt() {
// 任务执行逻辑
System.out.println("Hello, XXL-Job! Param: " + param);
}
首先新建一个任务
进入任务填写配置
@XxlJob(value = "dutyPrompt")要和这个注释对应
XXL-Job 作为一款强大的分布式任务调度平台,为开发人员提供了方便、灵活的任务管理和调度解决方案。通过可视化的管理界面和丰富的功能,XXL-Job 已经在众多项目中得到了广泛的应用。如果您正在寻找一种高效、可靠的任务调度工具,不妨考虑使用 XXL-Job。