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 BootSpring Cloud

Spring Cloud @Retryable Anotasyonu Nedir Kullanım Örneği

Paylaş

Spring Cloud Dersleri‘ne devam ediyorum.

İçindekiler

  • @Retryable Anotasonu Nedir?
    • @Retryable Parametreleri
    • application.properties Tanımlaması
  • @Retryable Kullanı Örneği

Bu yazıda @Retryable anotasyonu kullanarak servislerimizde oluşabilecek hatalar sonucunda tekrar servise erişimi yönetebilmekteyiz.

@Retryable Anotasonu Nedir?

@Retryable anotasyonu Spring kütüphanesinde olan bir anotasyondur. Metodunun bir hata oluştuğunda tekrar çalışmasını sağlamaktayız.

Metodun üzerine yazacağımız attribute’ler sayesinde başarısızlıkla sonuçlanan metodun kaç kez deneneceğini, bekleme süresini ve sonucunda oluşacak hata tipini belirleyebilmekteyiz.

@Retryable Parametreleri

  • value: Metodumuzun Exception sınıfının türünü tanımlarız.
  • maxAttempts: Metodun kaç kere tekrarlandığını belirtiriz.
  • backoff: Yeniden deneme süresini belirleriz.

application.properties Tanımlaması

Bu anotasyonun yazılımımızda çalışabilmesi için aşağıdaki tanımlamayı yapmamız gerekmektedir.

spring.retry.enabled=true
Code language: JavaScript (javascript)

Bu sayede yazılımız içerisindeki tüm retry fonksiyonlarının çalışmasını sağlamaktayız.

Servislerimizdeki metotların hepsine tek tek tekrar sayısı ve süresini belirleyebildiğimiz gibi application.properties dosyasına yazacağımız tanımlamala sayesinde tüm retry fonksiyonlarında genel bir kural seti verip, tüm servisimizdeki metotlarda geçerli kılabiliriz.

spring.retry.backoff.initial-interval=2000 spring.retry.backoff.max-interval=20000 spring.retry.backoff.multiplier=2 spring.retry.max-attempts=5

Yukarıdaki yaptığımız tanımlama sayesinde örnek olarak servisimize bir kural koymuş oluyoruz.

Örnek olarak yeniden deneme işleminin ilk bekleme süresini 2 saniye, maksimum bekleme süresini 20 saniye yeniden deneme işleminde bekleme süresinin 2 katına çıkacağı, yeniden deneme işleminin maksimum 3 kere yapılacağını da belirtmiş olduk.

@Retryable Kullanı Örneği

Servisimizde bir metot oluşturağız ve bu metodun içerisinde bir hata oluşturacağız. Bu hata sonucunda koyacağımız retry sayesinde tekrar denenmesine ve beklemesine imkan tanıyacağız.

@Service public class StudentService { @Retryable(value = { RemoteServiceNotAvailableException.class }, maxAttempts = 5, backoff = @Backoff(delay = 5000)) public void updateStudent() { // bir hata oluşmasını sağlayalım. throw new RemoteServiceNotAvailableException(); } }
Code language: Java (java)

Metodumuzda bir hata oluşturduk. Artık bu metoda gelen istekler sonucu oluşan hatada tekrar deneme ve süresi tanımlayarak beklemesini ve tekrar denenmesini sağlıyoruz.

Başka bir metot üzerinden çağırdığımıza RemoteServiceNotAvailableException hatasını belirli bir süre ve denemeden sonra alacağız bu sayede oluşan hatayı handle edebiliriz.

Rest api oluşturalım.

@RestController public class StudentController { @Autowired private StudentService studentService; @GetMapping("/call-remote-service") public void callRemoteService() { try { studentService.updateStudent(); } catch (RemoteServiceNotAvailableException ex) { // oluşan hatayı } } }
Code language: PHP (php)

Feign Client tarafından başka bir servis tarafından erişilebilir.

@FeignClient(name = "student-service") public interface RemoteStudentServiceClient { @GetMapping("/update") void updateStudent(); }
Code language: Java (java)
@Service public class AnotherService { @Autowired private RemoteStudentServiceClient remoteStudentServiceClient; public void updateStudent() { try { remoteStudentServiceClient.updateStudent(); } catch (RemoteServiceNotAvailableException ex) { // hatayı handle edebiliriz. } } }
Code language: Java (java)

Sonraki Spring Cloud Dersleri’nde görüşmek üzere.


Önceki Ders: Spring Boot AWS SQS Kullanımı
Spring Cloud Dersleri
Sonraki Ders:

Paylaş

Diğer Yazılar

Burak KUTBAY
Previous

Blogumun 2022 Özeti ve 2023 Hedefleri

Previews
26 Aralık 2022

Blogumun 2022 Özeti ve 2023 Hedefleri

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

just Spring Boot Command Tool

just: Spring Boot Geliştiricileri İçin Komut Aracı

Spring Boot Dersleri

Spring Boot Projelerinde Tomcat Yerine Jetty Kullanmak

Spring Cloud Aws SQS Uygulama Örneği

Spring Boot Cloud AWS SQS Kullanımı

Spring Cloud Config Server Nedir Uygulama Örneği Dersler

Spring Cloud Config Server Nedir? Uygulama Örneği

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