1+ using Microsoft . Extensions . Logging ;
12using Polly ;
23using Polly . Retry ;
4+ using Polly . Telemetry ;
35
46namespace ConsolePollyTest ;
57
@@ -21,6 +23,19 @@ private static Uri GetUri(string path)
2123 return new Uri ( Host , path ) ;
2224 }
2325
26+ private static TelemetryOptions GetTelemetry ( )
27+ {
28+ var telemetryOptions = new TelemetryOptions
29+ {
30+ // Configure logging
31+ LoggerFactory = LoggerFactory . Create ( builder => builder . AddConsole ( ) ) ,
32+ } ;
33+ telemetryOptions . TelemetryListeners . Add ( new MyTelemetryListener ( ) ) ;
34+ telemetryOptions . MeteringEnrichers . Add ( new MyMeteringEnricher ( ) ) ;
35+
36+ return telemetryOptions ;
37+ }
38+
2439 public static async Task NoStrategy_TestAsync ( )
2540 {
2641 var builder = new ResiliencePipelineBuilder ( ) ;
@@ -41,17 +56,26 @@ public static async Task NoStrategy_TestAsync()
4156
4257 public static async Task Retry_ExecThree_TestAsync ( )
4358 {
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- } ) ;
59+ var builder = new ResiliencePipelineBuilder ( ) . ConfigureTelemetry ( GetTelemetry ( ) )
60+ . AddRetry (
61+ new RetryStrategyOptions
62+ {
63+ Delay = TimeSpan . FromSeconds ( 1 ) ,
64+ //MaxDelay =
65+ BackoffType = DelayBackoffType . Exponential ,
66+ UseJitter = true ,
67+ MaxRetryAttempts = 2 ,
68+ //DelayGenerator = (args) =>
69+ // {
70+ // return ValueTask.FromResult(
71+ // (TimeSpan?)TimeSpan.FromSeconds(Math.Pow(2, args.AttemptNumber)));
72+ // },
73+ ShouldHandle = ( args ) =>
74+ {
75+ Console . WriteLine ( args . AttemptNumber ) ;
76+ return ValueTask . FromResult ( args . AttemptNumber >= 0 ) ;
77+ }
78+ } ) ;
5579 var pipeline = builder . Build ( ) ;
5680
5781 using var client = GetClient ( ) ;
0 commit comments