SpringBoot2.1.9 分布式锁ShedLock

一、分布式锁配置

(1)redis锁

pom.xml

<dependency>
	<groupId>net.javacrumbs.shedlock</groupId>
	<artifactId>shedlock-spring</artifactId>
	<version>2.5.0</version>
</dependency>

<dependency>
	<groupId>net.javacrumbs.shedlock</groupId>
	<artifactId>shedlock-provider-redis-spring</artifactId>
	<version>2.5.0</version>
</dependency>

自动配置

@Configuration
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
public class DataSourceConfig {

    @Bean
    public LockProvider scheduledLockConfiguration(@Autowired RedisConnectionFactory connectionFactory) {
        return new RedisLockProvider(connectionFactory);
    }
	
}

(2)数据库锁

pom.xml

<dependency>
	<groupId>net.javacrumbs.shedlock</groupId>
	<artifactId>shedlock-spring</artifactId>
	<version>0.16.1</version>
</dependency>

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

 自动配置

@Configuration
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "PT30S")
public class DataSourceConfig {

    @Bean
    public scheduledLockConfiguration(@Autowired DataSource dataSource) {
 
        return new JdbcTemplateLockProvider(dataSource);
    }

}

二、定时任务配置

@Component
public class CronTask {

    @Scheduled(cron="0 0/1 * * * ?")
    @SchedulerLock(name = "test-lock:testMethod", lockAtMostFor = 3 * 60 * 1000, lockAtLeastFor = 30 * 1000)
    public void testMethod(){
       
      //do something
    }

}
发布了354 篇原创文章 · 获赞 522 · 访问量 128万+

猜你喜欢

转载自blog.csdn.net/moakun/article/details/104029765
今日推荐