Este artigo apresenta o método de nova tentativa para apoiar a tentativa da Spring. É compartilhado com você. Os detalhes são os seguintes:
O primeiro passo é introduzir dependências do Maven
<Dorde> <PuerpId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-Starter-Parent </ArtifactId> <Versão> 1.5.3.Release </sipers> </parentid> <pendence> <TarifactId> Spring-boot-Starter-Web </ArtifactId> </Dependency> <!-https://mvnrepository.com/artifact/org.springframework.retry/spring-retry-> dependência> <roupid> org.springFramework.retry </grupo <Versão> 1.1.2.Release </siers> </dependency> <pendecency> <voundid> org.aspectj </groupiD> <TRAFACTID> AspectJweaver </stardifactId> <versão> 1.8.6 </versão> </pendence>
Etapa 2: Adicionar @retryable e @recover anotações
pacote hello; importar org.springframework.remoting.remoteacescessception; importar org.springframework.retry.annotation.backoff; importar org.springframework.Rotry.anTation.recover; import org.springfristwork.Retry.Rettion.ManTation.memcover; org.springframework.stereotype.service; @ServicePublic Classe RemoteService {@retryable (value = {remoteAcceScexception.class}, maxAtTempTs = 3, backOff = @backoff (atraso = 5000l, multiplier = 1)) public), o que é o que é o que é o que é o que é o que é o que é o que você está fazendo com o objetivo de avaliar -se que, além de ser utilizadas, com o objetivo de avaliar o uso de um doscidos e os que estão sendo feitos teto. lançar nova remoção remoteAccessException ("Exceção de chamada RPC");}@recuperpublic void recuper (remoteacceSexception e) {System.out.println (e.getMessage ());}} @Retryable anotação <br /> se o método anotado tiver uma exceção, será tentado novamente
Valor: especifique que a exceção ocorreu e tente novamente
Incluir: como valor, o padrão está vazio. Quando o excluir também estiver vazio, todas as exceções serão tentadas novamente
Exclua: especifique que a exceção não tente novamente, o padrão está vazio. Quando incluir também está vazio, todas as exceções serão repetidas.
maxattemps: número de tempos de tentativa, padrão 3
RECONHOFF: Renasse o mecanismo de compensação, sem inadimplência
@Backoff anotação
Atraso: especifique o atraso e tente novamente
Multiplicador: especifique múltiplos do atraso, como atraso = 5000L, multiplicador = 2, após a primeira tentativa ser de 5 segundos, a segunda vez é de 10 segundos e a terceira vez é de 20 segundos.
@Recuperar
Quando a tentativa atingir o número especificado de vezes, o método anotado será chamado de volta e o processamento de log pode ser executado nesse método. Deve -se notar que o retorno de chamada ocorrerá apenas se a exceção ocorrer e o tipo de parâmetro for o mesmo.
Etapa 3: Inicie o recipiente e teste no trampolim
Adicionar @enableretry anotação para ativar a função de nova tentativa
pacote hello; import org.springframework.boot.autoconfigure.springbootapplication; importar org.springframework.context.applicationContext; importar org.springframework.context.annotation.annotationCigApplicationContext; importar; org.springframework.retry.annotation.enableretry;@springbootapplication@enableretrypublic class Application {public static void main (string [] args) lança exceção {ApplicationContext anoTationContext = novo anotaçãoConfigApplicationContenContex. RemoteService RemoteService = AnoTationContext.getBean ("RemoteService", RemoteService.class); remoteService.call (); }} Resultados em execução:
16: 50: 51.012 [Main] Debug Org.springframework.retry.support.retrytemplate - Represente: count = 0
Faça algo ...
16: 50: 51.025 [Main] Debug Org.springframework.retry.backoff.exponencialbackoffpolicy - Dormindo por 5000
16: 50: 56.026 [Main] Debug Org.springframework.retry.support.retrytemplate - Verificação de Rethrow: count = 1
16: 50: 56.026 [Main] Debug Org.springframework.retry.support.retrytemplate - Representar: contagem = 1
Faça algo ...
16: 50: 56.026 [Main] Debug Org.springframework.retry.backoff.exponencialbackoffpolicy - Dormir por 5000
16: 51: 01.026 [Main] Debug Org.springframework.retry.support.retrytemplate - Verificação de Rethrow: count = 2
16: 51: 01.027 [Main] Debug Org.springframework.retry.support.retrytemplate - Representante: contagem = 2
Faça algo ...
16: 51: 01.027 [Main] Debug Org.springframework.retry.support.retrytemplate - Verificação de Rethrow: count = 3
16: 51: 01.027 [Main] Debug Org.springframework.retry.support.retrytemplate - Representante falhou na última tentativa: count = 3
Exceção de chamada RPC
Referência: https://github.com/spring-projects/spring-retry
Reabastecer
Para solicitações não-idepotentes (como operações novas ou atualizadas), não use a tentativa, pois terá um grande impacto na consistência dos dados.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.