@@ -17,8 +17,8 @@ public class AwsQuery
1717 readonly AmazonSQSClient sqs ;
1818 readonly FixedWindowRateLimiter rateLimiter ;
1919
20- public DateTime EndTimeUtc { get ; set ; }
21- public DateTime StartTimeUtc { get ; set ; }
20+ public DateOnly EndDate { get ; set ; }
21+ public DateOnly StartDate { get ; set ; }
2222
2323 public string CloudWatchRegion => cloudWatch . Config . RegionEndpoint . SystemName ;
2424 public string SQSRegion => sqs . Config . RegionEndpoint . SystemName ;
@@ -34,8 +34,8 @@ public AwsQuery()
3434 // Otherwise AcquireAsync() will return a lease immediately with IsAcquired = false
3535 QueueLimit = int . MaxValue
3636 } ) ;
37- EndTimeUtc = DateTime . UtcNow . Date . AddDays ( 1 ) ;
38- StartTimeUtc = EndTimeUtc . AddDays ( - 30 ) ;
37+ EndDate = DateOnly . FromDateTime ( DateTime . UtcNow ) . AddDays ( 1 ) ;
38+ StartDate = EndDate . AddDays ( - 30 ) ;
3939
4040 sqs = new AmazonSQSClient ( ) ;
4141 cloudWatch = new AmazonCloudWatchClient ( ) ;
@@ -58,7 +58,10 @@ public async Task<List<string>> GetQueueNames(Action<int> onProgress, Cancellati
5858
5959 var response = await sqs . ListQueuesAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
6060
61- queueNames . AddRange ( response . QueueUrls . Select ( url => url . Split ( '/' ) [ 4 ] ) . ToArray ( ) ) ;
61+ if ( response . QueueUrls is { Count : > 0 } )
62+ {
63+ queueNames . AddRange ( response . QueueUrls . Select ( url => url . Split ( '/' ) [ 4 ] ) . ToArray ( ) ) ;
64+ }
6265
6366 onProgress ( queueNames . Count ) ;
6467
@@ -86,19 +89,19 @@ public async Task<long> GetMaxThroughput(string queueName, CancellationToken can
8689 {
8790 Namespace = "AWS/SQS" ,
8891 MetricName = "NumberOfMessagesDeleted" ,
89- StartTimeUtc = StartTimeUtc ,
90- EndTimeUtc = EndTimeUtc ,
91- Period = 86400 , // 1 day
92+ StartTime = StartDate . ToDateTime ( TimeOnly . MinValue ) ,
93+ EndTime = EndDate . ToDateTime ( TimeOnly . MaxValue ) ,
94+ Period = 24 * 60 * 60 , // 1 day
9295 Statistics = [ "Sum" ] ,
93- Dimensions = [ new Dimension { Name = "QueueName" , Value = queueName } ]
96+ Dimensions = [
97+ new Dimension { Name = "QueueName" , Value = queueName } ]
9498 } ;
9599
96100 using var lease = await rateLimiter . AcquireAsync ( cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
97101 var resp = await cloudWatch . GetMetricStatisticsAsync ( req , cancellationToken ) . ConfigureAwait ( false ) ;
98102
99- var maxThroughput = resp . Datapoints . MaxBy ( d => d . Sum ) ? . Sum ?? 0 ;
100-
101- return ( long ) maxThroughput ;
103+ return resp . Datapoints is { Count : > 0 } ?
104+ ( long ) resp . Datapoints . Select ( d => d . Sum . GetValueOrDefault ( 0 ) ) . Max ( ) : 0L ;
102105 }
103106 }
104107}
0 commit comments