「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
詳細 †
以下のようなポリシーを組み合わせて実装できる。
機能 †
Retry †
Circuit Breaker †
設定で指定した回数のエラーが連続して発生した場合、Exceptionを返す。
Timeout †
指定した時間が経過しても処理が終わらない場合、Exceptionを返す。
- 悲観的タイムアウト
- 通常のタイムアウト
- クライアント側なので処理を抜けるだけになる。
- 楽観的タイムアウト
- 悲観的タイムアウトでは、処理を抜けるだけになるが、
- 楽観的タイムアウトでは、CancellationToken?によるキャンセル処理を実装できる。
Bulkhead Isolation †
- 並列に実行可能なリクエスト数を制限する。
- コンシューマーバルクヘッドとも呼ぶ。
- セマフォを使って 同時実行可能数を制限している。
Fallback †
エラーが発生した場合に、最終的に返したい値は Fallback を使って指定する。
Cache †
Cacheを、他の Policy と組み合わせて柔軟に処理に組み込める。
PolicyWrap? †
上記(Retry, Circuit Breaker, Timeout, Bulkhead, Fallback)を組み合わせる。
見解 †
実装例 †
- ラッパーでも良いと思うが、DIの実装例が多い。
- 更にクリーン・アーキテクチャ的な実装例もある。
- ケースバイケース(オーバースペックにならないようにする)
利用シーン †
- Pollyって機能的に足りてるんだろうけど、結局、
ことになる気がする。
- なんとなく、
この全ポリシーを組み合わす機会が少ない
ので、ありがたみが少ない気がする。
クライアント実装 †
- 所詮、クライアント側実装ではある。
- サーバ実装で担保スべきところもありそうだ。
サーバ実装 †
サーバ実装も考えると、やはり、Pollyダケでは完結しない。
参考 †
Qiita †
Microsoft Docs †
Tags: :通信技術, :.NET開発, :ASP.NET