Page 1 of 1

Wie kann ich mehrere LockProvider für geplante Aufgaben im Frühjahr konfigurieren?

Posted: 13 Jan 2025, 13:18
by Guest
Ich versuche, in Springboot zwei Shedlock-Konfigurationen zu erstellen, um meine geplanten Aufgaben mithilfe verschiedener Tabellen sperren zu können

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());
}
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

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"
}
Ist es möglich, das zu erreichen, was ich versuche?