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设置的目的是什么?此外;如果消息在主题上过期,会发生什么?
答案 0 :(得分:5)
主题上设置的TTL应用于其所有订阅。如果需要,订阅可以有自己的TT,但它应该少于主题TTL。应用于订阅的TTL应用于发送给它的所有消息,并且消息可以具有其自己的TTL,该TTL应该再次低于订阅TTL。 如果邮件过期并且订阅时启用了DeadLettering,则过期的messaged将被移动到DeadLetter队列,否则将永久删除。
来自此处的更多信息:http://msdn.microsoft.com/en-us/library/windowsazure/hh780749.aspx