導入
Config Serverが回復の時間を与えるためにConfig Serverが反応しない場合にクライアントが再試行する必要がある場合があります。 Springが提供する再試行コンポーネントを使用して、再試行間隔、再試行時間などを含む再試行メカニズムを簡単に構成できます。以下ではあまり言いません。詳細な紹介を一緒に見てみましょう。
プロジェクトソースコード
クリックしてダウンロードします
Webプロジェクトの依存関係を追加します
クライアントの再試行機能、2つの新しい依存関係、Spring-RetryとSpring-Boot-Starter-AOPを有効にするには、次のコードをWebプロジェクトのpom.xmlファイルに追加します。
<Dependency> groupId> org.springframework.retry </groupid> <artifactid> spring-retry </artifactid> <version> 1.2.2.Release </version> </dependency> <seplency> <groupid> org.springframework.boot </groupid> spring-boot-stortortid> </artificid
次に、Bootstrap.ymlファイルに次の構成を追加します。
スプリング:アプリケーション:名前:name:web-clientクラウド:config:uri:http:// localhost:8888 fail-fast:true retry:initial-interval:1000 max-attemps:6 max-interval:2000 hupplearer:1.1
最初に、spring.cloud.config.fail-fastを真であるとします。つまり、リモート構成を取得できない場合、すぐに失敗しますが、次の構成でもう一度試してください。
spring.cloud.config.retryすべての子供はデフォルト値です。
テスト
このチュートリアルでプロジェクトを使用する場合は、最初にConfigServerプロジェクトを開始し、レジストリプロジェクトを開始してEurekaを開始する必要があります。WebクライアントはEurekaサービスを使用し、ConfigServerを閉じてからWebプロジェクトを開始する必要があります。次のログが表示されます。
2018-05-15 16:04:58.421 INFO2663 --- [MAIN] CCCCONFIGSERVICEPROPERTYSOURCEROCATOR:サーバーからのフェッチング構成:http:// localhost:8888
6回の再試行障害の後、クライアントは開始に失敗します。 configserverが途中で有効になっている場合、Webクライアントは正常に起動します。
細粒のコントロール再試行
コードにより詳細な制御再試行メカニズムを実装し、Webプロジェクトで新しいJavaクラスcn.zxuqian.configurations.retryConfigurationを作成し、次のコードを追加できます。
パッケージcn.zxuqian.configurations; import org.slf4j.logger; Import org.slf4j.loggeractory; Import org.springframework.boot.autoconfigure.condition.conditionalonmissingbean; Import org.springframework.context.context.annotation.bean org.springframework.retry.interceptor.retryinterceptorbuilder; Import org.springframework. retryceptor.retryoperationsInterceptor; public class retryConfiguration; {private static logger log = loggeractory.getlogger(retryConfiguration.class); @bean @conditionalonmissingbean(name = "configserverretryinterceptor」 Retryinterceptorbuilder .stateless().backoffoptions(1000、1.2、5000).maxattempts(10).build(); }}ここでは、カスタム再試行インターセプターを使用して、Spring Retryのconfigserverretryinterceptorメソッドを定義します。方法retryinterceptorBuilderを使用して、必要に応じてステートレスretryOperationSterceptorを作成し、初期再試行間隔を1000ミリ秒に設定します。増加倍数は1.2倍、最大再試行間隔は5000ミリ秒、最大再試行時間は10倍です。ビルダーは、関心のある読者が自分で勉強できる再生メカニズムの構成などのインターフェイスも提供します。
@ConditionAlonMissingBeanは、BeanFactoryにconfigserverretryinterceptorという名前のBeanが存在しない場合にこの豆が一致していることを示します。
最後に、src/main/resources/meta-inf/(フォルダーは作成できません)新しいspring.factoriesファイルを作成し、起動時にクラスを構成として作成したばかりであることを指定して、リモート構成を取得する前に有効になります。
org.springframework.cloud.bootstrap.bootstrapconfiguration = cn.zxuqian.configurations.retryConfiguration
テスト
最後に、ConfigServerを閉じる条件下でWebプロジェクトを開始すると、10回の再試行後にプロジェクトが失敗することがわかります。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。