Both a Topic on the Azure Service Bus and an associated Subscription expose the DefaultMessageTimeToLive
property; initialised like so:
if (!NamespaceManager.TopicExists(TopicName))
{
NamespaceManager.CreateTopic(
new TopicDescription(TopicName)
{
MaxSizeInMegabytes = 5120,
DefaultMessageTimeToLive = TimeSpan.FromDays(14)
});
}
if (!NamespaceManager.SubscriptionExists(TopicName, SubscriptionName))
{
NamespaceManager.CreateSubscription(
new SubscriptionDescription(TopicName, SubscriptionName)
{
LockDuration = TimeSpan.FromMinutes(5),
DefaultMessageTimeToLive = TimeSpan.FromDays(7),
EnableDeadLetteringOnMessageExpiration = true
});
}
What is the difference between the two and what is the purpose of having two TTL settings? Furthermore; if a message expires on the Topic what happens to it?
The TTL set on a Topic is applied to all of its subscriptions. subscriptions can have their own TT if needed, however it should be less than Topic TTL. TTL applied on subscription is applied on all the a messages sent to it and messages can have its own TTL which should be again less than Subscription TTL. If the message expires and if DeadLettering enabled on the Subscription, expired messaged will be moved to DeadLetter queue else will be deleted permanently.
More info from here: http://msdn.microsoft.com/en-us/library/windowsazure/hh780749.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With