Spring 提供了一种简单的方法来实现用于调度作业的 API。在我们部署应用程序的多个实例之前,它运行良好。
默认情况下,Spring 无法处理多个实例上的调度程序同步。它在每个节点上同时执行作业。
- <dependency>
- <groupId>net.javacrumbs.shedlockgroupId>
- <artifactId>shedlock-springartifactId>
- <version>2.2.0version>
- dependency>
目前,ShedLock支持Mongo,Redis,Hazelcast,ZooKeeper以及任何带有JDBC驱动程序的内容。
接下来,我们需要为 ShedLock 创建一个数据库表,以保存有关调度程序锁的信息:
- CREATE TABLE shedlock (
- name VARCHAR(64),
- lock_until TIMESTAMP(3) NULL,
- locked_at TIMESTAMP(3) NULL,
- locked_by VARCHAR(255),
- PRIMARY KEY (name)
- )
首先我们需要添加jdbc的包
- <dependency>
- <groupId>net.javacrumbs.shedlockgroupId>
- <artifactId>shedlock-provider-jdbc-template