Spring Retry
Das Spring Retry Projekt
Spring Retry ist ein Zusatzprojekt (), um Codeblöcke wiederholt auszuführen, wenn sie zu einem Fehler führen.
- Das ist nützlich beim Ansprechen von Remote-Diensten, die temporär nicht verfügbar sein können.
Als erstes müssen zwei Dependencies in unsere POM:
org.springframework.retry
spring-retry
org.springframework
spring-aspects
@Retryable
Schreiben wir eine Bean, die zwei Anläufe braucht, eine Operation durchzuführen.
@Component
class Achiever {
int tries = 1;
@Retryable
public int tryIt() {
System.out.println( "Runde " + tries );
tries++;
if ( tries != 3 )
throw new IllegalStateException( "Runde nicht 3" );
return tries;
}
}
Retryable drückt aus, das eine Operation bei Ausnahmen automatisch neu aufgerufen werden soll.Die Methoden können eine Rückgabe haben, oder auch keine.
@EnableRetry
Damit Spring für die annotierten Methoden einen Proxy baut, müssen wir eine @Configuration mit @EnableRetry annotieren.
Wir können nun den Achiever injizieren:
@Autowired Achiever archiever;
Und die Methode ausführen:
System.out.println( "Vor dem Aufruf" );
int i = archiever.tryIt();
System.out.println( "Nach dem Aufruf ist i=" + i );
Auf der Konsole erscheint keine Exception. Nur:
Vor dem Aufruf
Runde 1
Runde 2
Nach dem Aufruf
Der Annotationsty Retryable
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Retryable {
String interceptor() default "";
Class
1 Kommentare
Arne Zelasko ·
Erinnert mich an die Failsafe Library https://github.com/jhalterman/failsafe
Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.