Spring Boot 配置 ShedLock 分布式定时任务教程
简介
ShedLock是一个轻量级的Java库,支持分布式锁和分布式定时任务。它的目标是使定时任务在分布式环境中更可靠和可重复性。
步骤 1:添加依赖
首先,你需要在你的 pom.xml
文件中添加 ShedLock 的依赖:
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>2.6.0</version>
</dependency>
步骤 2:配置ShedLock
在 Spring Boot 中,你可以配置 ShedLock 的许多选项。这里,我们将使用最简单的默认配置。只需在 application.yml
中添加以下配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db
username: your_username
password: your_password
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
hibernate:
ddl-auto: none
# Enable ShedLock
# 1. Enable auto-configuration
autoconfigure:
lock:
provider: zookeeper # or etcd
# 2. Set Zookeeper connection string
shedlock:
zookeeper:
connectionString: localhost:2181
其中,你需要设置数据源的 URL、用户名和密码,以及 ShedLock 与 Zookeeper 的连接字符串。
步骤 3:编写定时任务
下面,我们将创建一个简单的 Java 类,用于编写定时任务:
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
// This task runs every minute
@Scheduled(cron = "0 * * * * *")
@SchedulerLock(name = "myTaskName")
public void checkAndUpdateData() {
// Your task code goes here
System.out.println("Task executed at: " + new java.util.Date());
}
}
这里,我们使用了 @Scheduled
注释来设置任务的计划执行时间。同时,我们还使用了 @SchedulerLock
注释来指示该任务应该被 ShedLock 锁定。这可以确保在分布式环境中,同一任务不会同时运行。
步骤 4:测试定时任务
为了测试我们编写的定时任务,你可以使用以下命令启动应用程序:mvn spring-boot:run
当应用启动后,你可以在应用控制台上看到定时任务的输出。
示例 1:Zookeeper 配置示例
在这个示例中,我们将使用 Zookeeper 作为 ShedLock 的提供者。因此,我们需要配置 Zookeeper 的连接字符串,您可以在 application.yml
中添加以下配置:
spring:
# Enable ShedLock
autoconfigure:
lock:
provider: zookeeper
# Set Zookeeper connection string
shedlock:
zookeeper:
connectionString: localhost:2181
示例 2:Etcd 配置示例
在此示例中,我们将使用 etcd 作为 ShedLock 的提供者。因此,我们需要在 application.yml
中添加以下配置:
spring:
# Enable ShedLock
autoconfigure:
lock:
provider: etcd
# Set etcd endpoint
shedlock:
etcd:
endpoints:
- http://localhost:2379
注意,在这个示例中,我们需要在本地运行 etcd 服务器,直接使用官方的 Docker 镜像即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot配置ShedLock分布式定时任务 - Python技术站