在Azure Service Bus上,主题(Topic)和相关的订阅(Subscription)都有一个暴露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 设置? 此外,如果在主题上的消息过期了,会发生什么?
EnableDeadLetteringOnMessageExpiration
,这只能在订阅上设置。这引出了一个问题:为什么主题需要TTL呢? - Luke Merrett