BrokeredMessage上的文档说:
如果发件人在邮件上设置的TTL超过目的地的TTL,则邮件的TTL将被后一个值覆盖。请参阅DefaultMessageTimeToLive,DefaultMessageTimeToLive和DefaultMessageTimeToLive以了解有关如何在实体级别控制消息TTL的更多信息。
因此,要实现从“Log”订阅中自动删除的消息,在创建订阅时,我已将SubscriptionDescription.DefaultMessageTimeToLive
属性设置为TimeSpan.FromDays(5)
。
当我创建并发送代理消息时,将该消息上的TimeToLive
属性保留为默认值,当我检查到达该订阅的消息时,消息的ExpiresAtUtc
属性为{ {1}}。 31-12-9999 23:59
属性为TimetoLive
。由于“目标”订阅的TTL为5天,我原本期望值为10675199.02:48:05.4775807
。
我还需要做些什么才能让它发挥作用吗?
使用Service Bus Explorer 2.2.1.0重现的步骤
答案 0 :(得分:3)
隐藏消息的TTL值是没有意义的:
此行为目前是设计使用,应该独立于SDK版本:有效TTL是消息和实体的最小TTL,并在运行时检查,而不是在入队时刻印在消息上(因为实体级别)消息入队后可随时更改TTL)。该文档具有误导性,应予以修复。
答案 1 :(得分:0)
您必须在创建队列时设置DefaultMessageTimeToLive属性,而不是在创建队列客户端时设置。尝试删除队列并使用新队列描述再次创建它。
答案 2 :(得分:0)
您需要登录主题并将“默认消息生存时间”设置为14天。
出了什么问题?幸运的是,这个错误是不言自明的 表示Max Topic大小为1 GB(1073741824字节) 主题已被利用1073742326字节转换为 大约1 GB的限制。我们登录Azure门户并验证了 相同。接下来我们运行Service Bus Explorer来检查状态 消息。我们在主题中看到了数千条消息。
为什么邮件没有从主题中清除?现在显而易见了 问题出现了,是什么让这些成千上万的信息保持在话题中。 经过一番调查,我们发现“默认消息生存时间” 对于主题设置为非常高的数字。在这种情况下,它被设置为1 年。为了解决问题,我们将“默认消息时间”设置为 根据他们的App Developer推荐的“2天”。这个 解决了这个问题。以下是配置的屏幕截图 Azure管理门户: