Skip to content

Latest commit

ย 

History

History
133 lines (97 loc) ยท 5.76 KB

File metadata and controls

133 lines (97 loc) ยท 5.76 KB

resubmit-dlq

Resubmit messages from a dead letter queue back to the main queue or topic.

Synopsis

dotnet run -- resubmit-dlq -n <namespace> (-q <queue> | -t <topic> -s <subscription>) [options]

Options

Option Short Description
--namespace -n (Required) Fully qualified Service Bus namespace
--queue -q Queue name
--topic -t Topic name (requires --subscription)
--subscription -s Subscription name (requires --topic)
--target-queue Target queue to resubmit to (defaults to source queue)
--target-topic Target topic to resubmit to (defaults to source topic)
--before Only resubmit messages enqueued before this UTC datetime (ISO 8601)
--dry-run Preview message count without resubmitting
--interactive -i Interactive mode: view and select categories to resubmit
--merge-similar Merge similar categories by replacing parameterized values (GUIDs, numbers) with wildcards
--categorize-by Properties to categorize by. #Prop for system, $Prop for body. Default: #Subject,#DeadLetterReason
--verbose -v Enable verbose output

Examples

Resubmit All Messages

# From a queue DLQ back to the same queue
dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -q myqueue

# From a topic subscription DLQ back to the same topic
dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -t mytopic -s mysub

Resubmit to a Different Destination

# Resubmit from queue DLQ to a different queue
dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -q myqueue --target-queue other-queue

# Resubmit from subscription DLQ to a different topic
dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -t mytopic -s mysub --target-topic other-topic

Dry Run

Preview message count without resubmitting:

dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -q myqueue --dry-run
[DRY RUN] Found 1,523 messages in DLQ for queue 'myqueue'

Time-Based Filtering

Resubmit only messages enqueued before a specific date:

dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -q myqueue --before 2024-01-01T00:00:00Z

Interactive Mode

View messages grouped by category properties, then select which to resubmit:

dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -q myqueue -i
Dead Letter Summary:
โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ # โ”‚ #Subject            โ”‚ #DeadLetterReason              โ”‚ Count โ”‚
โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 1 โ”‚ OrderCreated        โ”‚ MaxDeliveryCountExceeded       โ”‚   847 โ”‚
โ”‚ 2 โ”‚ PaymentProcessed    โ”‚ MaxDeliveryCountExceeded       โ”‚   412 โ”‚
โ”‚ 3 โ”‚ (none)              โ”‚ TTLExpiredException            โ”‚   198 โ”‚
โ”‚ 4 โ”‚ OrderCreated        โ”‚ DeadLetterReasonHeader         โ”‚    66 โ”‚
โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Total: 1,523 messages

Select categories to resubmit (comma-separated numbers, 'all', or 'q' to quit): 1,2
Resubmitting 1,259 messages from 2 categories...
Resubmitted 1,259 messages from DLQ for queue 'myqueue'.

Custom Categorization

Categorize by any combination of system properties (#Prop) and JSON body properties ($Prop):

# Categorize by dead letter reason and a body property
dotnet run -- resubmit-dlq -n mynamespace.servicebus.windows.net -q myqueue -i \
  --categorize-by '#DeadLetterReason,$ErrorCode'

See dump-dlq for full property syntax reference.

Selection options:

Input Action
1,3,5 Select specific categories
1-5 Select a range
all / a Select all categories
q / empty Quit without resubmitting

Message Properties

When resubmitting, the following message properties are preserved:

  • Body and ContentType
  • Subject (Label)
  • MessageId and CorrelationId
  • SessionId and PartitionKey
  • To, ReplyTo, ReplyToSessionId
  • TimeToLive
  • All custom ApplicationProperties

Required Permissions

The authenticated identity needs one of these Azure RBAC roles:

  • Azure Service Bus Data Owner (recommended)
  • Both Azure Service Bus Data Receiver and Azure Service Bus Data Sender