11using Polly ;
2+ using Polly . Retry ;
23
34namespace ConsolePollyTest ;
45
@@ -7,9 +8,63 @@ public static class PollyTest
78
89 #region Constants & Statics
910
10- public static void MethodName ( )
11+ public static Uri Host { get ; set ; } = new Uri ( "http://localhost:5222" ) ;
12+
13+ private static HttpClient GetClient ( )
14+ {
15+ var client = new HttpClient { BaseAddress = Host } ;
16+ return client ;
17+ }
18+
19+ private static Uri GetUri ( string path )
20+ {
21+ return new Uri ( Host , path ) ;
22+ }
23+
24+ public static async Task NoStrategy_TestAsync ( )
25+ {
26+ var builder = new ResiliencePipelineBuilder ( ) ;
27+ var pipeline = builder . Build ( ) ;
28+
29+ using var client = GetClient ( ) ;
30+
31+ var result = await pipeline . ExecuteAsync (
32+ async ( token ) =>
33+ {
34+ var r = await client . GetAsync ( GetUri ( "/weatherforecast/" ) , token ) ;
35+ return r ;
36+ } ,
37+ cancellationToken : default ) ;
38+
39+ Console . WriteLine ( result ) ;
40+ }
41+
42+ public static async Task Retry_ExecThree_TestAsync ( )
1143 {
12- var builder = new ResiliencePipelineBuilder ( ) . ;
44+ var builder = new ResiliencePipelineBuilder ( ) . AddRetry (
45+ new RetryStrategyOptions
46+ {
47+ Delay = TimeSpan . FromSeconds ( 1 ) ,
48+ MaxRetryAttempts = 2 ,
49+ ShouldHandle = ( args ) =>
50+ {
51+ Console . WriteLine ( args . AttemptNumber ) ;
52+ return ValueTask . FromResult ( args . AttemptNumber >= 0 ) ;
53+ }
54+ } ) ;
55+ var pipeline = builder . Build ( ) ;
56+
57+ using var client = GetClient ( ) ;
58+
59+ var result = await pipeline . ExecuteAsync (
60+ async ( token ) =>
61+ {
62+ var r = await client . GetAsync ( GetUri ( "/weatherforecast/" ) , token ) ;
63+ return r ;
64+ } ,
65+ cancellationToken : default ) ;
66+
67+ Console . WriteLine ( result ) ;
1368 }
1469
1570 #endregion
0 commit comments