C# Azure服务总线上主题DefaultMessageTimeToLive和订阅DefaultMessageTimeToLive之间的差异

C# Azure服务总线上主题DefaultMessageTimeToLive和订阅DefaultMessageTimeToLive之间的差异,c#,azure,azureservicebus,C#,Azure,Azureservicebus,Azure服务总线上的主题和关联的订阅都公开了DefaultMessageTimeToLive属性;草签如下: if (!NamespaceManager.TopicExists(TopicName)) { NamespaceManager.CreateTopic( new TopicDescription(TopicName) { MaxSizeInMegabytes = 5120,

Azure服务总线上的主题和关联的订阅都公开了
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设置的目的是什么?此外;如果邮件在主题上过期会发生什么情况?

主题上设置的TTL将应用于其所有订阅。如果需要,订阅可以有自己的TT,但是它应该小于主题TTL。订阅上应用的TTL应用于发送给它的所有a消息,消息可以有自己的TTL,该TTL应再次小于订阅TTL。 如果消息过期并且订阅上启用了死信,则过期消息将移至死信队列,否则将永久删除


更多信息请点击此处:

谢谢您的回复,达纳;但是我知道,对于主题,您不能设置
启用死信非消息扩展
,这只能在订阅上设置。这就引出了一个问题;通过阅读本文()我推断,在主题上设置TTL是一个方便的选项,因为您不必在每个订阅上都设置TTL,过期的消息似乎都是订阅的死信。虽然“订阅从主题继承TTL,除非它们是使用较小的TTL显式创建的。根据是否启用死信,TTL已过期的邮件将被移动到订阅的关联死信队列或永久删除。”--非常感谢@Dhana如果您调整您的答案以匹配,我会将其标记为已接受。好了,答案会更新,以便其他人也能受益