Polly 重試策略

2022-02-23 04:03:26 字數 1484 閱讀 3882

基本重試:

public static void retry()

th times, ex: ");

}).execute(() =>

");}

});console.writeline(obj);

}

輸出:

重試一次成功:

重試兩次成功:

重試三次均失敗:

可以看到,再超過重試次數的時候, 若程式還是異常,則丟擲異常。

成功前一直重試:

public static void retryforever()

th times, ex: ");

}).execute(() =>

";default:

throw new exception($"random val: ");

}});

console.writeline(obj);

}

輸出:

case 0:這個分支去掉, 任務將變為不可能成功,會發現一直輸出重試。

程式異常後做短暫延遲再次重試:

.waitandretry(5, 

// 設定 sleep duration provider 來提供延遲時間

retrytimes => timespan.fromseconds(math.pow(2, retrytimes)),

(res, delay, times, context) =>

th times, sleep: s, ex: ");

})

可以看到我們在waitandretry方法中提供了延遲方式:retrytimes => timespan.fromseconds(math.pow(2, retrytimes)),, 這是一種比較典型的延遲方式,叫做 指數退避。

輸出:

.waitandretryforever(

// 設定 sleep duration provider 來提供延遲時間

(retrytimes, res, context) => timespan.fromseconds(math.pow(2, retrytimes)),

(res, times, delay, context) =>

th times, sleep: s, ex: ");

})

僅僅與waitandretrysleepdurationprovider的引數有點不同

此篇大體概括了 polly 重試的幾種方式, 當然 polly retry 還有很多過載, 但作用都是圍繞程式異常時進行自我調整再重試為中心。

使用 Polly 實現複雜策略 超時重試

第一次接觸 polly 還是在做某個微服務系統的時候,那時只會使用單一的超時策略與重試策略,更加高階的特性就沒有再進行學習了。最近開為某個客戶開發 pc 端的上位機的時候,客戶有個需求,在發起請求之後如果 5 秒鐘沒有響應則進行重試,總共可以重試 3 次,如果 3 次請求都未返回資料,就視為請求失敗...

Polly 重試機制

引用 install package microsoft.extensions.http.polly 在core中的使用 方式一 先配置再執行 注意 執行 executeasync 方法,異常會丟擲 方式二 邊配置邊執行 result await policy handle ex ex.code 4...

Polly 故障處理策略

polly故障處理策略,記錄 不詳細解釋了 using polly using polly.retry using system using system.collections.generic using system.threading namespace pollydemo console.w...