Introdução
Às vezes, o cliente precisa tentar novamente quando o servidor de configuração não responde para dar tempo ao servidor de configuração para se recuperar. Usando o componente de nova tentativa fornecido pela primavera, podemos configurar facilmente o mecanismo de tentativa, incluindo intervalo de nova tentativa, número de tempos de tentativa, etc. Não vou dizer muito abaixo, vamos dar uma olhada na introdução detalhada juntos.
Código fonte do projeto
Clique para baixar
Adicione dependências para projetos da web
Para habilitar a função de tentativa do cliente, duas novas dependências, retração de primavera e spring-boot-starter-aop, adicione o seguinte código ao arquivo pom.xml do projeto da web:
<Depencency> <PuerpId> org.springframework.retry </groupid> <TRATIFACTID> Spring-retry </sutifactId> <Version> 1.2.2.Release </sipers> </dependency> <pendência> <purpyId> org.springframework.boot <//Groupid> <TristifactId> spring-BOOTSTER>
Em seguida, adicione a seguinte configuração no arquivo bootstrap.yml:
Primavera: Aplicação: Nome: Client Client: Config: URI: http: // localhost: 8888 Fail-Fast: True Refry: Inicial Interval: 1000 Max-ATTEMS: 6 MAX-Interval: 2000 Multiper: 1.1
Primeiro, deixe o Spring.cloud.config.fail-Fast ser verdadeiro, ou seja, se a configuração remota não puder ser obtida, ela falhará imediatamente, mas tente novamente com a seguinte configuração.
spring.cloud.config.retry Todas as crianças são valores padrão:
teste
Se usarmos o projeto neste tutorial, precisamos iniciar primeiro o projeto ConfigServer, iniciar o projeto de registro e iniciar o Eureka, porque o cliente da web usa o serviço Eureka, feche o configServer e inicie o projeto da web. Veremos o seguinte log:
2018-05-15 16: 04: 58.421 INFO 2663 --- [PRINCIPAL] CCCCONFIGSERVICEPROPROPERTYSourcelocator: buscando a configuração do servidor em: http: // localhost: 8888
Após 6 falhas de tentativa, o cliente não inicia. Se o ConfigServer estiver ativado no meio do caminho, o cliente da web iniciar com sucesso.
Representação de controle de grão fino
Podemos implementar um mecanismo de tentativa de controle mais granular no código, criar uma nova classe Java CN.ZXUQIAN.CONFIGURAÇÕES.RRETRYCONFIGURAÇÃO NO PROJETO da Web e adicionar o seguinte código:
package cn.zxuqian.configurations;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.context.annotation.Bean;import org.springframework.retry.intercept.retryinterceptorbuilder; importar org.springframework.retry.intercept.retryoperationsintercept; public class RETRYCONFIGURAÇÃO {Private Static Logger Log = LoggerFactory.getLogger (retryConfiguration.class); @Bean @conditionalonMissingBean (name = "configServerRetRetRyInterceptor") public RetyoperationsIntercept ConfigServerRetRetRyInterceptor () {log.info (String.Format ("ConfigServerRetReption: Altering backOpions" + "to Initial: Initial: S, múltiplo %S. Retornar a repetição de reprodução. }} Aqui, definimos o método ConfigServerRetRyInterceptor para a Spring Rety usando nosso interceptor de repetição personalizado. Os métodos usam a repetição de repetição de repetição para criar uma repetição de apátrida e o cenário, conforme necessário, e definir o intervalo inicial de tentativa de 1000 milissegundos, o aumento múltiplo é 1,2 vezes, o intervalo de tentativa máxima é de 5000 milissegundos e os tempos máximos de repetição são 10 vezes. O construtor também fornece interfaces, como a configuração do mecanismo de tentativa, que os leitores interessados podem estudar por conta própria.
@ConditionalonMissingBean indica que esse feijão é comparado quando não há não que o feij seja chamado ConfigServerRretryInterceptor no BeanFactory.
Finalmente, no SRC/Main/Resources/Meta-Inf/(nenhuma pasta pode ser criada) Crie um novo arquivo Spring.Factories, especificando que acabamos de criar a classe como a configuração na inicialização, para que ele tenha efeito antes de obter a configuração remota:
org.springframework.cloud.bootstrap.bootstrapConfiguration = cn.zxuqian.configurações.retryConfiguration
teste
Por fim, inicie o projeto da web sob a condição de fechar o ConfigServer e, em seguida, verá que o projeto começa a falhar após dez tentativas.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.