springboot 集成shedlock

1.数据创建表

CREATE TABLE shedlock(
    NAME VARCHAR(64), 
    lock_until TIMESTAMP(3) NULL, 
    locked_at TIMESTAMP(3) NULL, 
    locked_by  VARCHAR(255), 
    PRIMARY KEY (NAME)
)

2.增加pom

<dependency>
      <groupId>net.javacrumbs.shedlock</groupId>
      <artifactId>shedlock-spring</artifactId>
      <version>2.2.1</version>
    </dependency>
    <dependency>
      <groupId>net.javacrumbs.shedlock</groupId>
      <artifactId>shedlock-provider-jdbc-template</artifactId>
      <version>2.2.1</version>
    </dependency>

3.yml文件增加配置连接数据库信息

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhsot:3306/intelligent_channel?useUnicode=yes&characterEncoding=utf8
    username: root1
    password: root1

4.springboot 启动主函数增加注解

@EnableSchedulerLock(defaultLockAtMostFor = "PT10M")
public class IntelligentchannelApplication {

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

5.创建类SchduleConfig

import java.time.Duration;
import javax.sql.DataSource;
import net.javacrumbs.shedlock.core.LockProvider;
import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider;
import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration;
import net.javacrumbs.shedlock.spring.ScheduledLockConfigurationBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
public class SchduleConfig{

  @Bean
  public LockProvider lockProvider(DataSource dataSource) {
    return new JdbcTemplateLockProvider(dataSource);
  }

  @Bean
  public ScheduledLockConfiguration scheduledLockConfiguration(LockProvider lockProvider) {
    return ScheduledLockConfigurationBuilder
        .withLockProvider(lockProvider)
        .withPoolSize(10)
        .withDefaultLockAtMostFor(Duration.ofMinutes(10))
        .build();
  }
}

6.创建定时job类

import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TimeTaskJob {

  /*private static final int FOURTEEN_MIN = 14 * 60 * 1000;*/
  @Scheduled(cron = "0/1 * * * * ?")
  @SchedulerLock(name = "testJob")
  public void scheduledTask() {
    System.out.println("aaaaaaa");
  }

}

注意: 第5,6步创建的类必须在springboot主启动函数的扫描范围内

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值