0
点赞
收藏
分享

微信扫一扫

安装Jmeter,配置jdk

ITWYY 2024-08-18 阅读 28

目录

前言

定时任务注解@Scheduled

设计一个定时任务

1.启用定时任务

2.创建定时任务

Cron 表达式详解

多线程定时任务

总结

定时任务框架xxl-job

SpringBoot继承定时任务框架

1.搭建调度中心xxl-job-admin

1.1下载项目

1.2修改配置文件端口和数据库代码

1.3连接到本地数据库,运行 db.sql

1.4启动项目,进行访问

2.在SpringBoot中运用

2.1引入依赖

 2.2编写配置文件

2.3编写xxlJob配置类

2.4创建定时任务

任务的运行与管理

高级功能

总结 


前言

定时任务注解@Scheduled

设计一个定时任务

1.启用定时任务

首先,需要在 Spring Boot 应用中启用定时任务功能。可以在应用的主类或配置类中添加 @EnableScheduling 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

2.创建定时任务

接下来,可以创建一个带有 @Scheduled 注解的方法来定义定时任务。以下是几种常见的定时任务配置方式:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduledTask {

    @Scheduled(fixedRate = 5000)
    public void executeTask() {
        System.out.println("Fixed rate task executed at " + System.currentTimeMillis());
    }
}
@Component
public class MyScheduledTask {

    @Scheduled(fixedDelay = 5000)
    public void executeTask() {
        System.out.println("Fixed delay task executed at " + System.currentTimeMillis());
    }
}
@Component
public class MyScheduledTask {

    @Scheduled(cron = "0 0/1 * * * ?")
    public void executeTask() {
        System.out.println("Cron expression task executed at " + System.currentTimeMillis());
    }
}

Cron 表达式详解

Cron 表达式的格式如下:

秒 分 时 日 月 星期 [年]

常见的 Cron 表达式例子:

多线程定时任务

默认情况下,所有的定时任务都在单线程中执行。如果你希望并发执行多个定时任务,可以自定义 TaskScheduler

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

@Configuration
public class SchedulingConfig {

    @Bean
    public ThreadPoolTaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);  // 设置线程池大小
        scheduler.setThreadNamePrefix("scheduled-task-");
        return scheduler;
    }
}

总结

定时任务框架xxl-job

XXL-JOB 是一个分布式任务调度平台,旨在解决分布式系统中的任务调度问题。相比于 Spring Boot 自带的 @Scheduled 注解,XXL-JOB 提供了更加灵活和强大的任务调度能力,支持集群模式下的任务调度、任务的可视化管理、任务的失败重试等功能。

SpringBoot继承定时任务框架

1.搭建调度中心xxl-job-admin

1.1下载项目

https://github.com/xuxueli/xxl-job

1.2修改配置文件端口和数据库代码

1.3连接到本地数据库,运行 db.sql

1.4启动项目,进行访问

用户名:admin,密码:123456,这个是默认初始化的用户名和密码

2.在SpringBoot中运用

2.1引入依赖

首先,在你的 Spring Boot 项目中引入 XXL-JOB 的依赖。可以在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version>
</dependency>
 2.2编写配置文件

接下来,需要配置 XXL-JOB。在 application.properties 中添加以下配置:


xxl.job.admin.addresses=http://127.0.0.1:8181/xxl-job-admin
xxl.job.accessToken=default_token册
xxl.job.executor.appname=xxl-job-executor-test
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.port=9999
xxl.job.executor.logpath=D:/data/applogs/xxl-job/jobhandler

xxl.job.executor.logretentiondays=30
2.3编写xxlJob配置类
package com.example.excel;

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;

@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;


    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        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;
    }
}

2.4创建定时任务

要创建一个定时任务,需要在服务中定义一个方法,并使用 @XxlJob 注解标识该方法为任务。

import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

@Component
public class MyXxlJob {

    @XxlJob("mySimpleJobHandler")
    public void execute() throws Exception {
        System.out.println("XXL-JOB Task executed at " + System.currentTimeMillis());
    }
}

2.5在 XXL-JOB 管理平台中配置任务

任务的运行与管理

配置完成后,你可以在 XXL-JOB 管理后台中手动触发任务执行,也可以根据配置的 CRON 表达式自动调度任务。管理后台还提供了任务执行日志查看、失败重试、任务禁用启用等功能。

高级功能

XXL-JOB 还支持一些高级功能,如:

总结 

举报

相关推荐

0 条评论