Quarkus Projelerinde Fault Tolerance Kullanmak
Quarkus Dersleri‘ne devam ediyorum.
Quarkus projelerimizde Microprofile’in Fault Tolerance’sini nasıl kullanırız açıklamaya çalışacağım.
Fault Tolerance’yi buradaki yazımda detaylıca anlattım. Buradan ulaşabilirsiniz.
Quarkus uygulamamız maven bağımlığımı aşağıdaki gibi olacak.
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-fault-tolerance</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
</dependencies>
Code language: HTML, XML (xml)
Fault Tolerance kullanmamız gereken bağımlıık quarkus-smallrye-fault-tolerance ‘dir. Bağımlılığımızı yükledikten sonra herhangi bir ayar yapmamıza gerek kalmamaktadır.
Bir Student entity oluşturalım ve bir kontrollerini oluşturacağız.
public class Student {
private Long id;
private String name;
private String surName;
public Student(Long id,String name, String surName) {
this.id=id;
this.name = name;
this.surName = surName;
}
// get - set
// ...
}
Code language: JavaScript (javascript)
Student kontrollerimizi oluşturalım;
@Path("/student")
public class StudentController {
public List<Student> dataStudent(@QueryParam("id") Long id) {
return Arrays.asList(
new Student(1L,"Burak", "Kutbay"),
new Student(2L,"Ali", "Veli"));
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@CircuitBreaker(failureRatio = 0.5, requestVolumeThreshold = 5, failOn = RuntimeException.class, delay = 50000L)
public List<Student> getStudent(@QueryParam("id") Long id) {
if (dataStudent(id).size()<=0) {
throw new RuntimeException("Listeye Ulaşılamadı.");
} else return dataStudent(id);
}
}
Code language: JavaScript (javascript)
getStudent
metotu üzerinde yaptığımız CircuitBreaker
tanımlamaması sayesinde oluşacak hatalar sonucunda nasıl bir davranış sergilemesi gerektiğini belirtmiş olmaktadır.
Metot içerisindeki oluşan hatalar sonucunda yeniden deneme isteği ve bekleme süresi tanılmaları yapılabilmektedir.
Sonraki Quarkus Dersleri’nde görüşmek üzere.
No Comment! Be the first one.