In the past few months, I’ve written, and spoken quite a lot about Azure Service Bus - especially the new features that are now available out of the box. here I wrote about Auto-forwarding, and in this post, I’m going to cover auto-delete; I think the two subjects go hand-in-hand.
The idea behind auto-delete is that if a set of messages are time sensitive, then the message queue can be flagged for auto-deletion. This is not the same as “Time To Live” for a message, because the entire queue is deleted after a period of inactivity!
Let’s see how we can set-up a new queue, in code (see the referenced post above for the NuGet packages that you’ll need for this):
private static async Task CreateAutoDeleteQueue(string connectionString, string queueName)
{
// Create authorisation rules
var authorisationRule = new SharedAccessAuthorizationRule(
"manage", new[] { AccessRights.Manage, AccessRights.Listen, AccessRights.Send });
var serviceBusAdministrationClient = new ServiceBusAdministrationClient(connectionString);
var options = new CreateQueueOptions(queueName)
{
AutoDeleteOnIdle = TimeSpan.FromMinutes(5)
};
options.AuthorizationRules.Add(authorisationRule);
var queue = await serviceBusAdministrationClient.CreateQueueAsync(options);
}
We can now post a number of messages to that queue:
Then, 5 minutes after the last message have been posted (or any activity has taken place), the queue is deleted:
References
https://www.serverless360.com/blog/hidden-gems-azure-service-bus