精品设计网站,网站当前链接,wordpress移动端可视化,比较好的外贸公司Scheduled#xff0c;Quartz#xff0c;XXL-JOB三种定时任务总结
一、Scheduled
简介
Scheduled 是 Spring 框架中用于声明定时任务的注解。通过使用 Scheduled 注解#xff0c;你可以指定一个方法应该在何时执行#xff0c;无需依赖外部的调度器。
这个注解通常与Enab…ScheduledQuartzXXL-JOB三种定时任务总结
一、Scheduled
简介
Scheduled 是 Spring 框架中用于声明定时任务的注解。通过使用 Scheduled 注解你可以指定一个方法应该在何时执行无需依赖外部的调度器。
这个注解通常与EnableScheduling 注解一起使用后者用于启用 Spring 的任务调度功能。当在一个类的方法上使用 Scheduled 注解时Spring 框架会自动创建一个定时任务并按照指定的规则执行该方法。
简单使用
首先建好一个Spring Boot项目在启动类上加EnableScheduling开启Spring的任务调度功能创建一个类再其方法上加上注解Scheduled通过cron表达式来指定什么时候执行该方法。
SpringBootApplication
EnableScheduling
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class);}
}Component
public class ScheduleTest {Scheduled(cron 0/3 * * * * ?)public void testScheduled() {//每3秒执行一次System.out.println(你好);}
}二、Quartz
简介
Quartz是一个开源的、功能强大且灵活的作业调度框架它支持复杂的调度需求作业持久化、集群部署等功能。它允许你按照设定的时间规则执行特定的任务例如定时执行、循环执行、间隔执行等。Quartz可以与Spring等框架无缝集成被广泛应用于企业级应用中。
简单使用
pom.xml中导入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-quartz/artifactId
/dependency创建一个定时器任务类实现QuartzJobBean接口的方法
public class QuartzTest extends QuartzJobBean {Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {System.out.println(我是Quartz你好);}
}创建Quartz配置类构建定时任务触发器
Configuration
public class QuartzConfig {Beanpublic JobDetail jobDetail() {return JobBuilder.newJob(QuartzTest.class).storeDurably(true).build();}Beanpublic Trigger trigger() {return TriggerBuilder.newTrigger().forJob(jobDetail()).withSchedule(CronScheduleBuilder.cronSchedule(0/3 * * * * ?)).build();}
}项目启动后你就能看到控制台每3秒就会打执行一次 三、XXL-Job
简介
XXL-JOB是一个分布式任务调度平台用于在分布式系统中进行任务调度和管理。XXL-JOB提供了可视化的任务管理界面、任务的动态添加、修改、删除等功能。它支持分布式部署并提供了任务执行日志、任务运行状态等监控功能。XXL-Job是为了解决分布式系统中任务调度的问题而设计的适合于大规模分布式系统中的定时任务调度。
简单使用
使用docker-compose安装
查找镜像选择xuxueli/xxl-job-admin
[rootlocalhost /]# docker search xxl-job
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
vulhub/xxl-job 1
xuxueli/xxl-job-admin A lightweight distributed task scheduling fr… 150 新建一个目录xxl-job在它下面建一个logs目录和一个docker-compose.yml文件
[rootlocalhost xxl-job]# pwd
/usr/local/software/xxl-job
[rootlocalhost xxl-job]# ls
docker-compose.yml logs编辑docker-compose.yml每个人的MySQL地址和ip不一样注意修改
version: 2
#自定义的docker网络
networks:wn_docker_net:external: true
services:xxl-job-compose:#读取Dockerfile#build: .#镜像名称image: xuxueli/xxl-job-admin:2.3.1#容器名称container_name: xxl-jobports:- 9898:8080environment:PARAMS: --spring.datasource.urljdbc:mysql://192.168.100.128:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai--spring.datasource.usernameroot--spring.datasource.password123volumes:- /usr/local/software/xxl-job/logs:/data/applogsnetworks:wn_docker_net:ipv4_address: 172.18.12.100进入xxl-job官网https://www.xuxueli.com/xxl-job/的github或gitee里的doc/db目录下找到建库语句tables_xxl_job.sql建数据库
docker-compose up -d后台构建执行
浏览器输入你自己虚拟机的ip192.168.100.128:9898/xxl-job-admin用户为建库后的xxl_job_user表中的数据 Spring Boot整合XXL-Job
导入依赖
dependencygroupIdcom.xuxueli/groupIdartifactIdxxl-job-core/artifactIdversion2.4.0/version
/dependency配置application-xxljob.yml进行一些执行器的配置
server:port: 13000#xxljob的配置
xxl:job:admin:addresses: http://192.168.100.128:9898/xxl-job-admin/executor:appname: xxl-job-executor-sampleport: 9777accessToken: default_tokenlogging:level:com.wnhz.ssc: debug创建XxlJobConfig配置类导入刚才在yml文件中的配置
Configuration
Slf4j
public class XxlJobConfig {Value(${xxl.job.admin.addresses})private String addresses;Value(${xxl.job.executor.appname})private String appName;Value(${xxl.job.executor.port})private int port;Value(${xxl.job.accessToken})private String accessToken;Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(addresses);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);log.debug(xxl-job初始化成功{}, xxlJobSpringExecutor);return xxlJobSpringExecutor;}
}创建XxlJob定时任务
Slf4j
Component
public class MyXxlJob {XxlJob(hello-xxljob)public void job() {log.debug(我的第一个xxljob);}
}在XXL-Job任务调度中心中的任务管理中添加任务
点击新增 启动spring项目
点击启动 可以看到xxl-job启动成功
总结
Schedule是计划执行任务的通用术语。Quartz是Java任务调度框架支持灵活任务管理。XXL-JOB是分布式任务调度平台注重大规模系统提供分布式任务调度和管理包括动态调度、监控、日志记录等功能。选择取决于应用需求Quartz适用于Java应用XXL-JOB适用于分布式环境。