File tree Expand file tree Collapse file tree
ServiceBusToolset/Commands Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -486,6 +486,9 @@ private async Task<int> PurgeByCategoriesAsync(
486486
487487 emptyBatches = 0 ;
488488
489+ var toComplete = new List < ServiceBusReceivedMessage > ( ) ;
490+ var toAbandon = new List < ServiceBusReceivedMessage > ( ) ;
491+
489492 foreach ( var message in messages )
490493 {
491494 var label = message . Subject ?? "(none)" ;
@@ -494,16 +497,23 @@ private async Task<int> PurgeByCategoriesAsync(
494497
495498 if ( selectedCategories . Contains ( key ) )
496499 {
497- await receiver . CompleteMessageAsync ( message , cancellationToken ) ;
498- totalDeleted ++ ;
500+ toComplete . Add ( message ) ;
499501 }
500502 else
501503 {
502- await receiver . AbandonMessageAsync ( message , cancellationToken : cancellationToken ) ;
503- totalSkipped ++ ;
504+ toAbandon . Add ( message ) ;
504505 }
505506 }
506507
508+ // Process completions and abandons in parallel
509+ var tasks = new List < Task > ( ) ;
510+ tasks . AddRange ( toComplete . Select ( m => receiver . CompleteMessageAsync ( m , cancellationToken ) ) ) ;
511+ tasks . AddRange ( toAbandon . Select ( m => receiver . AbandonMessageAsync ( m , cancellationToken : cancellationToken ) ) ) ;
512+ await Task . WhenAll ( tasks ) ;
513+
514+ totalDeleted += toComplete . Count ;
515+ totalSkipped += toAbandon . Count ;
516+
507517 Output . Progress ( $ "Purged { totalDeleted } messages (skipped { totalSkipped } )...") ;
508518 }
509519
You can’t perform that action at this time.
0 commit comments