Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring

Spring Scheduler ShedLock Kullanımı

Paylaş

Spring Scheduler projelerimizin fazla instance kullanarak dağıtık olarak çalıştırılmasında zamanlaştırılmış görev uygulamarının çalışması sorun oluşturabilir.

Aynı Scheduler uygulamanın aynı anda aynı görevi yapması problemini çözmek için kullanılan ShedLock kullanımından bahsedeceğim.

Shedlock kütüphanesi kısaca bir “ara tablo” oluşturarak çalışan Scheduler’ı kayıt altına alarak verdiğimiz süre boyunca başka bir servisin aynı scheduler’ı çalıştırmasını engellememize olanak sağlamaktadır.

Shedlock kullanmak için Shedlock Spring maven bağımlılığını ve ayrıca veritabanı tercihinize göre ilgili veritabanı provider bağımlılığını kullanmamız gerekmektedir.

Shedlock Spring bağımlılığı için

<dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-spring</artifactId> <version>4.33.0</version> </dependency>
Code language: HTML, XML (xml)

Veritabanı tercihimize göre ilgili provider bağımlılığını ekleyelim. Veritabanı Postgres olacak.

<dependency> <groupId>net.javacrumbs.shedlock</groupId> <artifactId>shedlock-provider-jdbc-template</artifactId> <version>4.33.0</version> </dependency>
Code language: HTML, XML (xml)

Provider bağımlılığımız bize Shedlock’un ara tablo kurmasını sağlaması için gerekli olacak.

Shedlock providerımız için veritabanımızın bağlantısını sağlamamız için bir config sınıfı oluşturacağız.

@Configuration public class SchedulerConfiguration { @Bean public LockProvider lockProvider(DataSource dataSource) { return new JdbcTemplateLockProvider(dataSource); } }
Code language: PHP (php)

LockProvider Shedlock’un bir bean’i ve kullandığımız veritabanımızın datasource bilgilerini Shedlock’a veriyoruz. Shedlock bu bilgiler ile birlikte scheduler’ımız çalıştığında oluşturduğu tabloya çalışan scheduler ile iligli limit bilgilerini ve aktif olan scheduler adını kayıt altına almasını sağlayacak.

Aşağıdaki gibi bir tablo yapısı karşılayacak bizi.

+-------------+--------------------------+--------------------------+---------+ |name |lock_until |locked_at |locked_by| +-------------+--------------------------+--------------------------+---------+ |schedulerdemo|2022-04-04 20:00:00.000000|2022-04-04 20:10:00.000000|burak | +-------------+--------------------------+--------------------------+---------+

İlgili scheduler’ımıza bakalım ve bu schedulerımız 10 dakikada bir çalışan bir metot. Bu metotumuza scheduler lock ekleyelim.

@Scheduled(cron = "0 0/15 * * * ?") @SchedulerLock(name = "schedulerdemo", lockAtMostFor = "4m", lockAtLeastFor = "14m") public void shortRunningTask() { System.out.println("Merhaba Dünya"); }
Code language: CSS (css)

15 dakikada bir çalışan metotumuza @SchedulerLock anotasyonu kullanarak adını, en az ve en çok kitleme bekleme süresini tanımlıyoruz.

  • lockAtLeastFor : En fazla kitli kalma süresini belirler.
  • lockAtMostFor : En az kitli kalma süresini belirler.

Bu tanımlamaları yaparak çoğul olarak çalışan spring uygulamalarımızda kullandığımız scheduler’ımzı tekilleştiriyoruz.

Tags:

shedlock nedirspring boot derslerispring derslerispring scheduler

Paylaş

Diğer Yazılar

Burak KUTBAY
Previous

Maven : error in opening zip file when running Hatası Çözümü

blank
Next

Java Record Nedir ve Kullanımı

Next
blank
24 Nisan 2022

Java Record Nedir ve Kullanımı

Previews
28 Mart 2022

Maven : error in opening zip file when running Hatası Çözümü

Burak KUTBAY

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Boot Dersleri

Spring Boot Projelerinde Tomcat Yerine Jetty Kullanmak

Spring Boot Dersleri Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

Spring Boot Dersleri

Spring Boot Transaction, Isolation, Propagation ve RollBack

Spring Boot Dersleri

Spring Boot Projelerinde Jackson Kullanımı

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale