by Guest » 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
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?
Ich versuche, in Springboot zwei Shedlock-Konfigurationen zu erstellen, um meine geplanten Aufgaben mithilfe verschiedener Tabellen sperren zu können
[code]// 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]
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]@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"
}
[/code]
Ist es möglich, das zu erreichen, was ich versuche?