Este artículo presenta el método de reintento de primavera para admitir el reintento de primavera. Se comparte contigo. Los detalles son los siguientes:
El primer paso es introducir dependencias de Maven
<Parent> <MoupRoD> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </arfactid> <versers> 1.5.3.release </verversion> </parent> <pendency> <grupo> org.springframework.boot </proupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <!-https://mvnrepository.com/artifact/org.springframework.rcryry/spring-rety-> <pendency> <MoupRId> org.springframeWork.cripry </groupid> <Atifactid> Spring-Retry </ArtIntency> <Persion> 1.1.2.Release </versión> </pendency> <pendency> <MoupRoD> org.spectj </groupid> <artifactId> spectJWeaver </arfactid> <versión> 1.8.6 </verse> </pendency>
Paso 2: Agregar anotaciones @cryable y @recover
paquete hola; importar org.springframework.remoting.remoteAccessException; import org.springframework.rcry.annotation.backoff; import org.springframework.rcry.annotation.recover; import og.springframework.annotation.CoCover; importar orgepringFramework.retryryryableable; org.springframework.stereotype.service; @ServicePublic Class remoteservice {@cretryable (value = {remoteaccessexception.class}, maxattempts = 3, backoff = @backoff (demora = 5000l, multiplicador = 1)) public void llamado () lanza excepciones {System.out.println ("" do dowe ... ""); tirar nueva remotaCcessException ("RPC Call Exception");}@Recoudpublic Void Recover (RemoteAccessException e) {System.out.println (e.getMessage ());}} @Retryable Annotation <Br /> Si el método anotado tiene una excepción, se intentará nuevamente
Valor: especifique que ocurrió la excepción y vuelva a intentarlo
Incluir: Valor similar, el valor predeterminado está vacío. Cuando la exclusión también está vacía, todas las excepciones se intentarán nuevamente
Excluir: Especifique que la excepción no vuelva a intentar, el valor predeterminado está vacío. Cuando incluir también está vacío, se volverán a intentar todas las excepciones.
maxattemps: número de tiempos de reintento, predeterminado 3
Backoff: Vuelva a intentar el mecanismo de compensación, sin incumplimiento
@Annotación
Retraso: especifique el retraso y vuelva a intentarlo
Multiplicador: especifique múltiplos del retraso, como el retraso = 5000L, multiplicador = 2, después de que el primer reintento sea de 5 segundos, la segunda vez es 10 segundos y la tercera vez es de 20 segundos.
@Recuperar
Cuando el reintento alcanza el número especificado de veces, el método anotado se volverá a llamar, y el procesamiento de registro se puede realizar en este método. Cabe señalar que la devolución de llamada solo ocurrirá si se produce la excepción y el tipo de parámetro es el mismo.
Paso 3: Inicie el contenedor y pruebe en Springboot
Agregar anotación de @Enableretry para habilitar la función de reintento
paquete hola; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.context.applicationContex org.springframework.rcry.annotation.enableretry;@springbootapplication@EnableretryPublic de aplicación de clase {public static void main (string [] args) lanza la excepción {ApplicationContext AnnotationContext = New AnnotationConfigapplicationContext ("Hola"); RemotaService remoteService = annotationContext.getBean ("remotaService", remotaService.class); remotaService.call (); }} Resultados de ejecución:
16: 50: 51.012 [Main] Debug org.springframework.rcry.support.rcrytemplate - reinty: count = 0
Haz algo ...
16: 50: 51.025 [Main] Debug org.springframework.rcry.backoff.Exponentialbackoffpolicy - durmiendo para 5000
16: 50: 56.026 [Main] Debug org.springframework.rcry.support.rcrytemplate - verificación de Rethrow: Count = 1
16: 50: 56.026 [Main] Debug org.springframework.rcry.support.rcrytemplate - reinty: count = 1
Haz algo ...
16: 50: 56.026 [Main] Debug org.springframework.rcry.backoff.ExPonentialBackOffPolicy - durmiendo para 5000
16: 51: 01.026 [Main] Debug org.springframework.rcry.support.rcrytemplate - verificación de Rethrow: Count = 2
16: 51: 01.027 [Main] Debug org.springframework.rcry.support.rcrytemplate - reinty: count = 2
Haz algo ...
16: 51: 01.027 [Main] Debug org.springframework.rcry.support.rcrytemplate - verificación de Rethrow: Count = 3
16: 51: 01.027 [Main] Debug org.springframework.retry.support.rcrytemplate - Vuelva a clasificar el último intento: Count = 3
Excepción de llamadas de RPC
Referencia: https://github.com/spring-projects/spring-rety
Reponer
Para solicitudes no ideampotentes (como operaciones nuevas o actualizadas), no use Retinty, ya que tendrá un gran impacto en la consistencia de los datos.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.