Skip to content

Commit ee6307f

Browse files
committed
Parallelize purging
1 parent ffd040d commit ee6307f

1 file changed

Lines changed: 14 additions & 4 deletions

File tree

ServiceBusToolset/Commands/PurgeDlqCommand.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)