c# - Azure 服务总线上的主题 DefaultMessageTimeToLive 和订阅 DefaultMessageTimeToLive 之间的区别

标签 c# azure azureservicebus

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 应用于发送给它的所有消息,并且消息可以有自己的 TTL,该 TTL 应再次小于订阅 TTL。 如果消息过期并且订阅上启用了死信,则过期消息将被移至死信队列,否则将被永久删除。

更多信息请点击:http://msdn.microsoft.com/en-us/library/windowsazure/hh780749.aspx

关于c# - Azure 服务总线上的主题 DefaultMessageTimeToLive 和订阅 DefaultMessageTimeToLive 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491993/

相关文章:

c# - 断言(契约)和单元测试

python - 尝试在 Azure 中使用 matplotlib 时出现 "ModuleNotFoundError: No module named ' tkinter '"

azure - 通过 Visual Studio 在 Azure Functions 中使用 ServiceBus

"most recently used"的 C# 集合

c# - 带有 Swagger 和 FluentValidation 的 Web API 2 文档

c# - 如何等待 MailMessage.SendAsync?

具有虚拟网络的 Azure 网关

azure - 是否可以在位于 Github 的 YML 中查看 Gitlab 存储库?

Azure 服务总线订阅未从该主题获取任何消息

linux - MONO WCF 是否支持 Azure 服务总线中继