Wie kann ich mehrere LockProvider für geplante Aufgaben im Frühjahr konfigurieren?
Posted: 13 Jan 2025, 13:18
Ich versuche, in Springboot zwei Shedlock-Konfigurationen zu erstellen, um meine geplanten Aufgaben mithilfe verschiedener Tabellen sperren zu können
Es scheint jedoch nicht möglich zu sein, anzugeben, welcher Sperranbieter beim Definieren meiner geplanten Aufgaben verwendet werden soll. Die Annotation @SchedulerLock akzeptiert keinen LockProvider in ihrem Parameter
Ist es möglich, das zu erreichen, was ich versuche?
Code: Select all
// Main lock provider
@Bean("mainLockProvider")
public LockProvider mainLockProvider(DataSource dataSource) {
return new JdbcTemplateLockProvider(
JdbcTemplateLockProvider.Configuration.builder()
.withJdbcTemplate(new JdbcTemplate(dataSource))
.usingDbTime()
.withTableName("main_shedlock_table")
.build());
}
// Secondary lock provider
@Bean("secondaryLockProvider")
public LockProvider secondaryLockProvider(DataSource dataSource) {
return new JdbcTemplateLockProvider(
JdbcTemplateLockProvider.Configuration.builder()
.withJdbcTemplate(new JdbcTemplate(dataSource))
.usingDbTime()
.withTableName("secondary_shedlock_table")
.build());
}
Code: Select all
@Scheduled(cron = "*/5 * * * *")
@SchedulerLock(name = "some_scheduled_task", lockAtLeastFor = "PT15S", lockAtMostFor = "PT1M")
public void scheduledTaskUsingMainLockProvider() {
// Should have created a lock entry in table "main_shedlock_table"
}
@Scheduled(cron = "*/5 * * * *")
@SchedulerLock(name = "some_other_scheduled_task", lockAtLeastFor = "PT15S", lockAtMostFor = "PT1M")
public void scheduledTaskUsingSecondaryLockProvider() {
// Should have created a lock entry in table "secondary_shedlock_table"
}