この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 22130|答える: 3

[フレーム] . .NETのレジリエンスおよび一時的故障対応 Pollyの再試行戦略

[リンクをコピー]
掲載地 2019/05/28 23:54:53 | | | |
この投稿は2019年5月29日11時16分にKongcidaによって最後に編集されました。

前書き
プロジェクトでは、制御不能な原因でプロジェクト運営に問題が生じます。 例えば、サーバーの障害、サービスのクラッシュ、ネットワーク障害などです。 再試し可能なエラーに遭遇した場合は、Polly—— .を使えます .NETのエラスティックおよびトランジェントフォルト処理ライブラリ。 プロジェクト公式ウェブサイト住所(ハイパーリンクのログインが見えます。)。 今日はポリーの失敗した再挑戦戦略を記録します。


環境とツール


>VS 2017
>Windows 10システム


テキスト


1: 新しいコンソールアプリケーションを作成する。

2:ポリーの言葉を引用してください。 NuGetパッケージでダウンロード可能です

3: コードを貼り付ける



4: F6が生成します。 次に、debugフォルダの中に生成された.exeファイルを見つけて、ダブルクリック>実行します。



出力メッセージが見えます:Retried times 3。

F5がデバッグしているときも、この手法が3回行われていることがわかります。


ポリーの再挑戦戦略が詳しく説明されています

1: 例外タイプ


このコードでは、:handleに再試すべき例外タイプが含まれています。 つまり、実行されたコードが特定の例外を生じた場合、リトライ関数が実行されます。 それ以外の場合は再試行は行われません。 例外によっては再試行を必要としないものもあります。

もちろん、ここでいくつかの特定の例外タイプを記入して再試すことができます。



ここでのDivideByZeroExceptionは、ゼロで割り除くことを試みる例外を表しています。
SqlExceptionは、SQL Serverがエラーや警告を返す際に発生する例外を示します。 例えば、データベース接続の障害やSQL実行エラーなどです。
SmtpExceptionは、郵便サービスによって提出された例外を示します。 例えば、送信が失敗し、ネットワーク接続が失敗し、メールアカウントの情報が異常だった場合などです。

具体的な例外タイプについては、Microsoftの公式ドキュメントをご参照ください:



2:再挑戦タイプ

1) 最初のリトライタイプは、直接的に与えられたリトライ回数です。 以下のコードは3回しか再試されません。

リトライ時に各リトライで実行された関連するアクションを呼び出すことができます。 以下のコードは後の別の依頼です。 再試行を行う際には、再試行回数と例外の理由が印刷されます。



また、成功するまでコードを繰り返し試行し続けることもできます。



2) 2つ目のリトライの種類は、間隔をあけてリトライすることです。 以下のコードは、2秒ごと、7秒ごと、または10秒ごとに再試行することを意味します。 10秒にやり直してください。 実行が成功しない場合は、再試行を終了します。



また、再挑戦が成功するまで間隔をあげて再挑戦することも可能です。 これには関数の計算が必要です。



上記のコードは間接2のパワーリトライを指しています。 例えば、実行が失敗した場合、最初の試みは2秒ごとに、2回目は4秒ごとに、3回目は8秒ごとに再試行されます......... などなど。 処刑が成功するまで。



エピローグ


注意:上記のコードHandleの例外タイプは、実際のプロジェクトの状況に応じて記入してください。 すべての例外が再挑戦を必要とするわけではありません。

例外タイプはすべての例外の基本クラスです。 この部分を名前に記入しない方が良いです。そうしないと非常に深刻な結果を招きます。














先の:. ネット統合 PayPal IPN 返還値は常に無効でした
次に:C# yieldキーワードの使用
掲載地 2019/05/29 9:17:54 |
私はAOPでリトライ機構を自分で実装し、最終的にPollyライブラリは自分のニーズを満たすことが分かりましたが、私の関数は実装されており、私はサードパーティのライブラリを参照していますが、そこには無意味なコードが含まれている可能性があり、システムの最適化が難しいため、当面は役に立ちません。

添付は私のコードです:



時間があれば、ポリーも調べてみます
掲載地 2019/05/29 9:22:01 |
シャオ・ジャオザ 2019年5月29日 09:17に投稿
私はaopでリトライ機構を自分で実装し、最終的にPollyライブラリは自分のニーズを満たしましたが、私の機能は実装されており、導入は...

こうした小さなニーズを自分でやることに何の問題もありません
そして次回まで待ってから再挑戦すべきです
掲載地 2019/05/29 9:29:22 |
風は2019年5月29日 09:22に投稿
こうした小さなニーズを自分でやることに何の問題もありません
また次回まで待つべきでしょうか?

いいえ、例外は並行性、データ挿入、更新、削除の競合によって引き起こされるものでなければなりませんが、成功裏に実行される例外が必ずあると....... 省略されたコードはトランザクションをラップし、例外は自動的にロールバックされます。 2回目のリトライではコンフリクトが消えていたので、待ち時間を設定しませんでした。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com