Azure Service Bus上的主题DefaultMessageTimeToLive和Subscription DefaultMessageTimeToLive之间的区别

时间:2013-12-10 10:30:14

标签: c# azure azureservicebus

Azure Service Bus上的主题和关联的订阅都会公开DefaultMessageTimeToLive属性;像这样初始化:

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
            });
}

两者有什么区别,有两个TTL设置的目的是什么?此外;如果消息在主题上过期,会发生什么?

1 个答案:

答案 0 :(得分:5)

主题上设置的TTL应用于其所有订阅。如果需要,订阅可以有自己的TT,但它应该少于主题TTL。应用于订阅的TTL应用于发送给它的所有消息,并且消息可以具有其自己的TTL,该TTL应该再次低于订阅TTL。 如果邮件过期并且订阅时启用了DeadLettering,则过期的messaged将被移动到DeadLetter队列,否则将永久删除。

来自此处的更多信息:http://msdn.microsoft.com/en-us/library/windowsazure/hh780749.aspx