在叢集環境中執行的Spring計劃排程任務 - Stack Overflow

banq發表於2020-12-14

我正在編寫一個具有cron作業的應用程式,該作業每60秒執行一次。該應用程式被配置為在需要時擴充套件到多個例項。我只想每60秒(在任何節點上)在1個例項上執行任務。開箱即用,我找不到解決方案,我正在使用Spring 4.1.6。
有一個ShedLock專案可以滿足此目的。您只需註釋執行時應鎖定的任務:

@Scheduled( ... )
@SchedulerLock(name = "scheduledTaskName")
public void scheduledTask() {
   // do something
}

配置Spring和LockProvider:

@Configuration
@EnableScheduling
@EnableSchedulerLock(defaultLockAtMostFor = "10m")
class MySpringConfiguration {
    ...
    @Bean
    public LockProvider lockProvider(DataSource dataSource) {
       return new JdbcTemplateLockProvider(dataSource);
    }
    ...
}

 

相關文章