簡單紀錄如何使用App-vNext Polly 實作重試(Retry)機制
範例程式
public static int idx = 0;
void Main()
{
idx = 0;
string result = "";
Policy
//要處理的是什麼樣的例外(e.g. Exception、HttpRequestException)
.Handle<Exception>()
//重試次數及發生錯誤時的錯誤訊息紀錄等...的處理
.Retry(3, (exception, retryCount) =>
{
Console.WriteLine($"第 {retryCount} 次重試 | 錯誤訊息 :{exception.Message}");
})
// 要執行的任務
.Execute(() => MyTest(ref result));
result.Dump();
}
// You can define other methods, fields, classes and namespaces here
static void MyTest(ref string reault)
{
if (idx != 3)
{
idx++;
throw new ArithmeticException($"Error-{idx}");
}
Console.WriteLine("成功完成");
reault = "Success";
}
模擬超過重試次數仍然失敗的狀況
這只是簡易使用的筆記
要更多詳細資料可以參考下方的參考資料
參考資料:
https://github.com/App-vNext/Polly
https://www.dotblogs.com.tw/yc421206/2020/12/23/how_to_use_polly
https://marcus116.blogspot.com/2019/06/netcore-polly-retry.html