In diesem Artikel wird die Methode des Frühlings -Wiederholung zur Unterstützung des Frühlingswieders eingeführt. Es wird mit Ihnen geteilt. Die Details sind wie folgt:
Der erste Schritt besteht darin, die Abhängigkeiten von Maven einzuführen
<Ters </Groupid> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Parent </artifactID> <version> 1.5.3.Release </Version> </parent> <depelzus> <gruppe> org.spingframework.boot </Groupid> </Groupid> </Groupid> <artifactId> Spring-Boot-Starter-Web </artifactid> </abhängig> <!-https://mvnrepository.com/artifact/org.springframework.retry/spring-retry-> <abhängig <version> 1.1.2.Release </version> </abhängig> <depeopcy> <GroupID> org.aspespectj </gruppenintenz> <artifactId> AspektjWeaver </artifactid> <version> 1.8.6 </Version> </abhängig>
Schritt 2: Fügen Sie @Retryable und @Recover -Anmerkungen hinzu
Paket Hallo; import org.springframework.remoting.remoteAccessException; import org.springframework.retry.Annotation.backoff; org.springFramework.retry.Annotation.Recover; org.springFramework.stereotype.service; @ServicePublic class remoteservice {@Retryable (value = {remoteAccessexception.class}, MaxAttempts = 3, Backoff = @backoff (Delay = 5000L, Multiplier = 1)) public void void cap () leuchten Ausnahme {). Neue remoteAccessException werfen ("RPC Call Exception");}@RecoverPublic void Recare (remoteAccessException e) {System.out.println (e.getMessage ());}} @Retryable Annotation <BR /> Wenn die kommentierte Methode eine Ausnahme hat, wird sie erneut ausprobiert
Wert: Geben Sie an, dass die Ausnahme aufgetreten ist, und versuchen Sie es erneut
Geben Sie: Wie Wert einschließen, Standard ist leer. Wenn ausschließt auch leer ist, werden alle Ausnahmen erneut ausprobiert
Ausschließen: Geben Sie an, dass die Ausnahme nicht wiederholt, der Standard ist leer. Wenn auch die Einschlüsse leer ist, werden alle Ausnahmen wiedergegeben.
Maxattemps: Anzahl der Wiederholungszeiten, Standard 3
Backoff: Wiederholen Sie den Kompensationsmechanismus, kein Verzug
@Backoff Annotation
Verzögerung: Verspätung angeben und erneut versuchen
Multiplikator: Multiples der Verzögerung angeben, wie z. B. Delay = 5000L, Multiplikator = 2, nachdem der erste Wiederholung 5 Sekunden beträgt, beträgt das zweite Mal 10 Sekunden und das dritte Mal 20 Sekunden.
@Genesen
Wenn der Wiederholung die angegebene Anzahl von Male erreicht, wird die kommentierte Methode zurückgerufen und die Protokollverarbeitung kann in dieser Methode durchgeführt werden. Es ist zu beachten, dass der Rückruf nur dann auftritt, wenn die Ausnahme auftritt und der Parametertyp gleich ist.
Schritt 3: Starten Sie den Container und testen Sie im Springboot
Fügen Sie @Enableretry Annotation hinzu, um die Wiederholungsfunktion zu aktivieren
Paket Hallo; import org.springframework.boot.autoconfigure.springbootApplication; import org.springframework.context.ApplicationContext; import org.spingframework.context.annotation.annotationConfigaplicationContext; org.springFramework.retry.annotation.enableretry;@SpringBootApplication@EnableretryPublic Class Application {public static void main (String [] args) Ausnahme aus der Ausnahme {applicationContext AnnotationContext = new AnnotationConFigApplicationContext ("Hallo"); RemoteService remoteService = AnnotationContext.getbean ("remoteService", remoteservice.class); remoteService.call (); }} Auslaufergebnisse:
16: 50: 51.012 [Main] Debugg org.springframework.retry.support.retryTemplate - Wiederholung: count = 0
mach etwas…
16: 50: 51.025 [Main] Debugg org.springframework.retry.backoff.exponentialbackoffpolicy - Schlafen für 5000
16: 50: 56.026 [Main] Debugg org.springframework.retry.support.retryTemplate - Überprüfung auf Rethrow: count = 1
16: 50: 56.026 [Main] Debugg org.springframework.retry.support.retryTemplate - Wiederholung: count = 1
mach etwas…
16: 50: 56.026 [Main] Debugg org.springframework.retry.backoff.exponentialbackoffpolicy - Schlafen für 5000
16: 51: 01.026 [Main] Debugg org.springframework.retry.support.retryTemplate - Überprüfung auf Rethrow: count = 2
16: 51: 01.027 [Main] Debugg org.springframework.retry.support.retryTemplate - Wiederholung: count = 2
mach etwas…
16: 51: 01.027 [Main] Debugg org.springframework.retry.support.retryTemplate - Überprüfung auf Rethrow: count = 3
16: 51: 01.027 [Haupt] Debugg org.springframework.retry.support.retryTemplate - Wiederholung des letzten Versuchs: count = 3
RPC -Anrufausnahme
Referenz: https://github.com/spring-projects/spring-retry
Wieder auffüllen
Verwenden Sie bei nicht idempotenten Anfragen (z. B. neue oder aktualisierte Operationen) keinen Wiederholung, da dies einen großen Einfluss auf die Datenkonsistenz hat.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.