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

Luk*_*ett 4 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
            });
}
Run Code Online (Sandbox Code Playgroud)

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

Dha*_*amy 5

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

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

  • 通过阅读本文档(http://msdn.microsoft.com/en-us/library/windowsazure/hh780749.aspx),我推断它是一个方便的选项,在主题上设置TTL,因为你不必在每个上设置它订阅和过期的消息似乎转到订阅的死信.虽然没试过 (2认同)