springboot定时任务常见的两种处理方式

一.集成xxl-job

1.xxl-job简介(摘自许雪里中文教程

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

2.springboot项目集成

2.1引入jar包
<!-- xxljobcore -->
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>1.9.2</version>
</dependency>
<!-- xxljob 日志文件相关-->
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.2.26.v20180806</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-http</artifactId>
    <version>9.2.26.v20180806</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-util</artifactId>
    <version>9.2.26.v20180806</version>
</dependency>
<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-io</artifactId>
    <version>9.2.26.v20180806</version>
</dependency>
2.2 添加配置文件

yml:

xxl:
 job:
   admin:
   #测试ip,任务调度中心
     addresses: http://localhost:8080/xxl-job-admin-1.9.2
   executor:
     appname: hy-testone
     ip:
     port: 9999
     logretentiondays: -1
     logpath: /data/applogs/xxl-job/jobhandler
   accessToken:

配置文件读取:

@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
	/**
	 * 调用中心配置地址
	 */
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

	/**
	 * 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
	 */
    @Value("${xxl.job.executor.appname}")
    private String appName;
	/**
	 * 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
	 */
    @Value("${xxl.job.executor.ip}")
    private String ip;
	/**
	 * 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
	 */
    @Value("${xxl.job.executor.port}")
    private int port;
	/**
	 *  执行器通讯TOKEN [选填]:非空时启用;
	 */
    @Value("${xxl.job.accessToken}")
    private String accessToken;
	/**
	 * 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
	 */
    @Value("${xxl.job.executor.logpath}")
    private String logPath;
	/**
	 * 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能
	 */
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;


    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
        xxlJobExecutor.setAdminAddresses(adminAddresses);
        xxlJobExecutor.setAppName(appName);
        xxlJobExecutor.setIp(ip);
        xxlJobExecutor.setPort(port);
        xxlJobExecutor.setAccessToken(accessToken);
        xxlJobExecutor.setLogPath(logPath);
        xxlJobExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobExecutor;
    }

}
2.3执行器接口配置
@JobHandler(value="test")
@Component
public class ContractTimeOutJob extends IJobHandler {

    protected static final Logger logger = LoggerFactory.getLogger("XXL-JOB");
    
    @Override
    public ReturnT<String> execute(String param) throws Exception {
        logger.info("测试一下"+param+"啧啧");
        return SUCCESS;
    }
}

注意:
1.类继承抽象类IJobHandler,execute方法名任意,参数param作为调用中心传承处理,可为空。
2.注解@JobHandler(value=“test”)中value的值对应调用中心配置的JobHandler,作为映射对应处理。

3.调用中心配置

3.1 新增执行器

新增执行器

3.2 新增任务

新增任务
注意:
1.JobHandler配置对应执行器注解中的值。
2.cron:标准的cron格式

二. springboot自带定时任务

1.简述

springboot自带了一个微型的spring-quartz定时器Scheduled,可以让我们简单的实现定时任务

2.编写

自带的定时器非常简单,代码如下:

@Component
public class TestTask {

    @Scheduled(cron="0 * * * * ?")
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor=Exception.class)
    public void updateSchedulingSynchronize(){
        try {
            System.out.println("定时任务测试");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

启动类:新增@EnableScheduling 注解

注意:
1.@EnableScheduling 注解的作用是发现注解@Scheduled的任务并后台执行,此注解也可添加在存在定时任务的执行类上。
2.@Scheduled标注是定时任务,value值为执行时间

gitee代码地址:https://gitee.com/HuangyinGl/hytests.git
(ps:testone)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值