Einführung
Manchmal muss der Client wiederholen, wenn der Konfigurationsserver nicht reagiert, um die Wiederherstellung des Konfigurationsservers Zeit zu geben. Mit der von Spring bereitgestellten Wiederholungskomponente können wir den Wiederholungsmechanismus einfach konfigurieren, einschließlich Wiederholungsintervall, Anzahl der Wiederholungszeiten usw. Ich werde unten nicht viel sagen. Schauen wir uns die detaillierte Einführung zusammen an.
Projektquellcode
Klicken Sie hier, um herunterzuladen
Fügen Sie Abhängigkeiten für Webprojekte hinzu
So können Sie den Client-Wiederholungsfunktion, zwei neue Abhängigkeiten, Spring-Retry und Spring-Boot-Starter-AOP, den folgenden Code zur Datei pom.xml des Webprojekts hinzufügen:
<De vorhöhe> <gruppe> org.springframework
Fügen Sie dann die folgende Konfiguration in die Datei stootstrap.yml hinzu:
Frühling: Anwendung: Name: Web-Client Cloud: Konfiguration: URI: http: // localhost: 8888 fail-fast: true retyst: anfänglichinterval: 1000 max-attemptions: 6 maxinterval: 2000 Multiple: 1.1
Lassen Sie zuerst Spring.cloud.config.Fail-Fast wahr sein, dh wenn die Remote-Konfiguration nicht erhalten werden kann, fällt sofort fehl. Versuchen Sie es jedoch erneut mit der folgenden Konfiguration.
spring.cloud.config.retry Alle Kinder sind Standardwerte:
prüfen
Wenn wir das Projekt in diesem Tutorial verwenden, müssen wir zuerst das Konfigurationsprojekt starten, dann das Registrierungsprojekt starten und Eureka starten, da der Web -Client den Eureka -Dienst verwendet, dann den Konfigurationserver schließen und dann das Webprojekt starten. Wir werden das folgende Protokoll sehen:
2018-05-15 16: 04: 58.421 Info 2663 --- [Main] CCCConfigservicePropertySourcelocator: Fetching Config vom Server unter: http: // localhost: 8888
Nach 6 Wiederholungsfehlern startet der Kunde nicht. Wenn ConfigServer auf halbem Weg aktiviert ist, beginnt der Web -Client erfolgreich.
Feinkörnige Kontrolle Rety RETRY
Wir können einen detaillierteren Mechanismus zur Wiederholung von Granularsteuerung im Code implementieren, eine neue Java -Klasse cn.zxuqian.configurations.RetryConfiguration im Webprojekt erstellen und den folgenden Code hinzufügen:
Paket cn.zxuqian.configurations; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.boot.autoconfigure.condition.conditionalonInssingbean; org.springframework.retry.Interceptor.retryInterceptorBuilder; import org.springFramework.retry.Interceptor.RetryoperationsInterceTor; öffentliche Klasse RetryConfiguration {privat statischer Logger log = loggerfactory.getLogger (RetryConfiguration.Cllass); @Bean @Conditionalonmissingbean (name = "configServerretryInterceptor") public retyryoperationsInterceptor configServerRetryInterceptor () {log.info (String.Format ("configServerretryInterce: Wechseln von BackOffOptions" + "zu initial: %s, %s, multiple: %S, MAXInterval: %: %S"), 1000, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1000); return ryInterceptorBuilder .Stateless () .BackOffOptions (1000, 1,2, 5000) .maxattemptes (10) .build (); }} Hier definieren wir die configServerRetRyInterceptor -Methode für den Spring -Wiederholung mit unserem benutzerdefinierten Interceptor. Methoden verwenden RetyryInterceptorBuilder, um nach Bedarf einen staatenlosen Wiederholungsinterceptor zu erstellen und das anfängliche Wiederholungsintervall auf 1000 Millisekunden zu setzen, das Zunahme des Mehrfaches 1,2 -fach, das maximale Wiederholungsintervall beträgt 5000 Millisekunden und die maximale Wiederholungszeiten beträgt das 10 -fache. Der Builder bietet auch Schnittstellen wie die Konfiguration des Wiederholungsmechanismus, den interessierte Leser selbst studieren können.
@ConditionalonmissingBean gibt an, dass diese Bean übereinstimmt, wenn es keine bean -namens configServerretryInterceptor im Beanfaktor gibt.
Schließlich erstellen Sie in SRC/Main/Ressourcen/Meta-inf/(kein Ordner erstellt werden) eine neue Spring.Factores-Datei erstellen, in der wir angeben, dass wir die Klasse gerade als Konfiguration beim Start erstellt haben, damit sie wirksam wird, bevor sie die Remote-Konfiguration erhalten:
org.springframework.cloud.bootstrap.bootstrapConfiguration = Cn.Zxuqian.Configurations.RetryConfiguration
prüfen
Starten Sie schließlich das Webprojekt unter der Bedingung des Schließens von ConfigServer, und dann werden Sie feststellen, dass das Projekt nach zehn Wiederholung fehlschlägt.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.