Published on

Spring Boot İle Scheduler Yapısı Oluşturma 0

Authors

Spring Boot Scheduler İle Scheduler Oluşturma 0

Herkese selamlar! Bu yazıda Spring Boot ile Scheduler mekanizması nasıl oluştururuz bundan bahsedeceğim.

Spring Boot, Scheduler(Zamanlayıcı) oluşturmak, düzenlemek ve yönetmek için güçlü bir yapı sunar. Bu yapı, belirli aralıklarla veya belirli bir tarihte çalışması gereken görevleri kolayca tanımlamak için kullanılabilir.

1. Scheduler'ın Temel Kavramları

Spring Boot Scheduler, @Scheduled annotation'ı ile birlikte kullanılır. Bu annotation, bir metodu zamanlanmış bir görev olarak işaretler. Örneğin:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduler {

    @Scheduled(fixedRate = 5000) // 5 saniyede bir çalışır
    public void myScheduledTask() {
        System.out.println("Task is running.");
    }
}

Yazdıġımız myScheduledTask method'u verdiġimiz config'e istinaden her 5 saniyede bir 'Task is running.' çıktısını console'a yazdıracaktır.

2. Scheduler Config'leri

@Scheduled annotation'ı, çeşitli parametrelerle özelleştirilebilir. İşte bazı temel parametreler:

  • fixedRate: Belirli bir süreyle belirtilen görevi düzenli aralıklarla çalıştırır. Örneğin:

    @Scheduled(fixedRate = 5000) // Her 5 saniyede bir
    
  • fixedDelay: Belirli bir süreyle belirtilen görevi çalıştırır, ancak önceki görevin tamamlanmasını bekler. Örneğin:

    @Scheduled(fixedDelay = 5000) // Her çalışma tamamlandıktan 5 saniye sonra
    
  • cron: Unix cron tablosu benzeri bir ifadeyle belirtilen zamanlamaya göre görevi çalıştırır. Örneğin:

    @Scheduled(cron = "0 * * * * MON-FRI") // Her dakikanın 0. saniyesinde Pazartesi'den Cuma'ya kadar
    

    Bu parametreler, zamanlama ihtiyaçlarınıza göre görevlerinizi özelleştirmenize olanak tanır. Kullanıcıya özgü ihtiyaçlara göre bu parametreleri ayarlamak, zamanlanmış görevlerinizi esnek bir şekilde kontrol etmenize yardımcı olacaktır.

3. Scheduler'ı Etkinleştirmek

Spring Boot uygulamanızda Scheduler'ı etkinleştirmek için @EnableScheduling annotation'ını kullanmalısınız. Örneğin:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

@EnableScheduling anotasyonu, Spring Framework tarafından sağlanan bir anotasyondur ve bu anotasyon kullanıldığında, Spring uygulamasının zamanlanmış görevleri desteklemesi için gerekli olan alt yapıyı etkinleştirir. Bu anotasyonun eklenmesi, Spring Container'ın belirli bir zamanlama altyapısıyla entegre olmasını sağlar.

@EnableScheduling anotasyonu eklenince, Spring aşağıdaki temel adımları gerçekleştirir:

  • Task Scheduler'ın Oluşturulması: Spring, zamanlanmış görevlerin yönetimini üstlenecek bir task scheduler oluşturur. Varsayılan olarak, bu ThreadPoolTaskScheduler sınıfıdır.

  • Anotasyon İşlemesi: Spring, uygulama içindeki bileşenleri tarar ve @Scheduled anotasyonu ile işaretlenmiş metodları belirler.

  • Görevlerin Yürütülmesi: @Scheduled anotasyonu ile işaretlenmiş metodlar, oluşturulan task scheduler aracılığıyla belirtilen zamanlamaya göre yürütülür.

Ayrıca, @EnableScheduling anotasyonu eklenince, aşağıdaki özellikler de etkinleştirilir:

  • Cron Expression Desteği: Bu anotasyonun etkinleştirilmesi, cron tablosu benzeri ifadelerle zamanlanmış görevleri tanımlama yeteneğini sağlar.

  • Fixed Rate ve Fixed Delay Desteği: @Scheduled anotasyonu içinde kullanılan fixedRate ve fixedDelay gibi parametrelerle görevlerin çalışma sıklığını belirleme yeteneğini sağlar.

  • Exception Handling: @Scheduled anotasyonu ile işaretlenmiş görevlerin çalıştığı sırada meydana gelen istisnaların nasıl ele alınacağını belirleme yeteneğini sağlar.

4. Sonuç

Spring Boot Scheduler, zamanlanmış görevleri etkili bir şekilde yönetmek için güçlü bir araçtır. @Scheduled annotation'ı ve farklı scheduler parametreleri ile esnek bir şekilde kullanılabilir.

Yazıyı okuduğunuz için teşekkür ederim, umarım faydalı olmuştur. Bu yazıda Spring Boot projelerimizde scheduler nasıl oluşturulur onu anlatmaya çalıştım.

Herkese iyi çalışmalar. ✌🏼