When you start to experiment with very large messages, or very large quantities of messages, there are times when the default lock duration of 30 seconds for Azure Service Bus can cause issues. In this post, I’ll show how this can be changed at a subscription or queue level using the Azure.Messaging.ServiceBus client.
As with previous articles that I’ve written on Service Bus, I’m not advocating this as a desirable way to deal with such cases; however, times do arise when it makes sense to adjust this value.
The key here is the ServiceBusAdministrationClient. It allows you to get a reference to the subscription or queue:
var serviceBusAdministrationClient = new ServiceBusAdministrationClient(connectionString); var sub = await serviceBusAdministrationClient.GetSubscriptionAsync("topic", "sub1");
You can then change something on that object; for example:
sub.Value.LockDuration = TimeSpan.FromSeconds(newDuration);
But it’s not updating
Somewhat counter intuitively, the final step is to update with the new object:
The subscription / queue should then update fine.
In this post, we’ve discussed how you can change the lock duration using the Azure Service Bus SDK. We’ve also shown how easy it can be to not realise that you need to explicitly update (ask me how I know!)