- Published on
Spring Boot İle Scheduler Yapısı Oluşturma 0
- Authors
- Name
- abidino
- @abidinozd
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. ✌🏼