21 Ocak 2021 Perşembe

SpringScheduling SchedulingConfigurer Arayüzü

Giriş
Şu satırı dahil ederiz
import org.springframework.scheduling.annotation.SchedulingConfigurer;
SpringScheduling kullanırken daha fazla kontrol istersek bu sınıfı kullanmak gerekir. Açıklaması şöyle.
When more control is desired, a @Configuration class may implement SchedulingConfigurer. This allows access to the underlying ScheduledTaskRegistrar instance.
configureTasks metodu
ScheduledTaskRegistrar sınıfı yazısına bakabilirsiniz.

Örnek
Şöyle yaparız. Burada SpringScheduling tarafından kullanılacak yeni bir thread pool tanımlanıyor
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

@Configuration
public class SchedulerConfiguration implements SchedulingConfigurer {

  @Bean
  public Executor taskExecutor() {
    return Executors.newScheduledThreadPool(100);
  }

  @Override
  public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    taskRegistrar.setScheduler(taskExecutor());
  }
}
Aslında Spring kapanırken thread pool da düzgün kapansın istiyorsak destroyMethod belirterek şöyle yaparız
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
   return Executors.newScheduledThreadPool(1);
}

Hiç yorum yok:

Yorum Gönder