How do I delete a DeadLetter message on an Azure Service Bus Topic
azure, azureservicebus, c#, dead-letter, queue
Solution
Yes, calling complete on the reference to the brokered message you receive from the dead letter queue will remove it from the dead letter queue.
Problem
I'm writing a piece of code which will allow us to: - View a list of all dead letter messages that exist within an Azure Service Bus Topic (Peek) - Fix and send them back to the Topic - Delete them from the dead letter queue upon resending. I have no issues with the first 2 points; using the Peek receive mode I can show a list of messages and we can edit and resend with no issues. The problem comes when I want to actually delete the message from the dead letter queue. How do we do this on a message by message level? We may only want to delete 2 of the messages residing in the dead letter queue and keep the others for reviewing at a later stage. Does calling `.Complete()` on a message in the dead letter queue remove it like it does in the main subscription? For reference; here is our code for getting the `SubscriptionClient` for the dead letter queue: ``` private SubscriptionClient GetOrCreateSubscriptionClient(string connectionString) { if (!NamespaceManager.TopicExists(_topicName)) { NamespaceManager.CreateTopic(new TopicDescription(_topicName) { MaxSizeInMegabytes = 5120, DefaultMessageTimeToLive = TimeSpan.FromSeconds(DEFAULT_LOCK_DURATION_IN_SECONDS) }); } if (!NamespaceManager.SubscriptionExists(_topicName, _subscriptionName)) { NamespaceManager.CreateSubscription(_topicName, _subscriptionName); } var deadLetterPath = SubscriptionClient.FormatDeadLetterPath(_topicName, _subscriptionName); var client = SubscriptionClient.CreateFromConnectionString( connectionString, deadLetterPath, _subscriptionName, ReceiveMode.PeekLock); return client; } ```