Cet article présente la méthode de réessayer Spring pour soutenir Spring Reryn. Il est partagé avec vous. Les détails sont les suivants:
La première étape consiste à introduire les dépendances Maven
<s parent> <proupId> org.springframework.boot </proupId> <ArtifActid> printemps-boot-starter-Parent </ artifactId> <DERVIÈRE> 1.5.3.release </DERVIÈRE> </parent> <Dedency> <ProupID> org.springframework.boot </proupId> <ArtefactId> Spring-Boot-Starter-Web </ Artifactid> </ Dependency> <! - https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -> <pedigency> <proupdid> org.springframework.retry </proupId> <ArtifActid> Spring-retry </ artifactive> <version> 1.1.2.release </ version> </ Dependency> <Dedency> <ProupId> org.AspectJ </proupId> <ArtefactId> AspectJwweaver </ ArfactId> <Dersion> 1.8.6 </DERNIERSE> </Dependance>
Étape 2: Ajouter les annotations @Retryable et @recover
Package Hello; import org.springframework.remoting.remoteAccessException; import org.springframework.retry.annotation.backoff; import org.springframework.annotation.recover; import org.springframework.retry.annotation.recover; import org.spring org.springframework.sterreotype.service; @ServicePublic class RemoTeService {@Retryable (value = {RemoteAccessException.class}, maxatTempts = 3, backoff = @backoff (delay = 5000l, multiplier = 1)) public Vend Call () lâche exception {System.out.TratLn ("Do Knomething ..."); lancer un nouveau remoteAccessException ("RPC Call Exception");} @ RecoverPublic void Recover (RemoteAccessException e) {System.out.println (e.getMessage ());}} @Retryable Annotation <br /> Si la méthode annotée a une exception, elle sera réessayée
Valeur: spécifiez que l'exception s'est produite et réessayez
Inclure: comme la valeur, la valeur par défaut est vide. Lorsque l'exclusion est également vide, toutes les exceptions seront réessayées
Exclure: spécifiez que l'exception ne réessaye pas, la valeur par défaut est vide. Lorsque l'inclusion est également vide, toutes les exceptions seront réessayées.
Maxattemps: Nombre de temps de réessayer, par défaut 3
Backoff: réessayez le mécanisme de compensation, pas de défaut
@Backoff Annotation
Retard: spécifiez le retard et réessayez
Multiplicateur: Spécifiez les multiples du retard, tels que le retard = 5000L, le multiplicateur = 2, après la première nouvelle tentative de 5 secondes, la deuxième fois est de 10 secondes et la troisième fois est de 20 secondes.
@Récupérer
Lorsque la réessayer atteint le nombre de fois spécifié, la méthode annotée sera rappelée et le traitement du journal peut être effectué dans cette méthode. Il convient de noter que le rappel ne se produira que si l'exception se produit et que le type de paramètre est le même.
Étape 3: Démarrez le conteneur et testez à Springboot
Ajouter une annotation @enableret pour activer la fonction de réessayer
package bonjour; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.context.applicationContext; import org.springframework.context.annotation.annotationConfigApplicationContext; import; org.springframework.retry.annotation.enabletry; @ SpringbootApplication @ enabletryPublic class application {public static void main (String [] args) lève une exception {applicationContext annotationContext = new annotationConfigApplicationContext ("bonjour"); RemoService RemoService = annotationContext.getBean ("RemoTeService", RemoTeService.class); RemoService.Call (); }} Résultats en cours:
16: 50: 51.012 [Main] Debug Org.SpringFramework.retry.Support.RetryTemplate - Retry: Count = 0
faire quelque chose…
16: 50: 51.025 [Main] Debug org.springframework.retry.backoff.ExponentialBackOffPolicy - Sleeping for 5000
16: 50: 56.026 [Main] Debug org.springframework.retry.support.retryTemplate - Vérification de Rethrow: Count = 1
16: 50: 56.026 [Main] Debug org.springframework.retry.support.retryTemplate - Retry: Count = 1
faire quelque chose…
16: 50: 56.026 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpolicy - Sleep for 5000
16: 51: 01.026 [Main] Debug org.springframework.retry.support.retryTemplate - Vérification de Rethrow: Count = 2
16: 51: 01.027 [Main] Debug org.springframework.retry.Support.RetryTemplate - Retry: Count = 2
faire quelque chose…
16: 51: 01.027 [Main] Debug org.springframework.retry.support.retryTemplate - Vérification de Rethrow: Count = 3
16: 51: 01.027 [Main] Debug org.springframework.retry.support.retryTemplate - Retry a échoué la dernière tentative: Count = 3
Exception de l'appel RPC
Référence: https://github.com/spring-projects/spring-retry
Remplir
Pour les demandes non compatibles (telles que les opérations nouvelles ou mises à jour), n'utilisez pas de réessayer, car elle aura un grand impact sur la cohérence des données.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.