Azure 服务总线 - TTL 与 ScheduledEnqueueTimeUtc

Azure Service Bus - TTL with ScheduledEnqueueTimeUtc

队列设置为 5 分钟的 TTL(生存时间)。

当您从 UtcNow 添加 ScheduledEnqueueTimeUtc 为 1 分钟的消息时,消息会在 5 分钟或 6 分钟后过期吗?

我的假设是 6,因为我希望 TTL 'countdown' 到 'start' 一旦消息在队列中 'active' 并且消息在预定的排队时间之前不活动通过。

那么如果您将消息排队 6 分钟,它将在 11 分钟后过期。

我的假设正确吗?

你的假设是正确的。消息有几个属性:

ScheduledEnqueueTimeUtc 消息出现时间由用户代码设置 TimeToLive 由用户或实体(在您的情况下为队列)设置的消息生存时间 EnqueuedTimeUtc - 代理收到消息时的只读时间 ExpiresAtUtc - 消息过期的计算时间

如果消息在时间 X 入队,队列中的 TTL 为 5 分钟且不低于为单个消息指定的 TTL,则消息将在 X + 1 次出现在队列中。 IE。 EnqueuedTimeUtc 将是 X + 1。TimeToLive 5 分钟后,ExpiresAtUtc 将计算为 X + 1 + 5。

因此消息从现在开始排队 6 分钟 (X),它不会在 X + 11 之前过期。