Azure Service Bus - 带有ScheduledEnqueueTimeUtc的TTL

时间:2016-09-28 00:24:14

标签: azure azureservicebus azure-servicebus-queues

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

当您从UtcNow添加1分钟的ScheduledEnqueueTimeUtc消息时,消息是否会在5分钟或6分钟后到期?

我的假设是6,因为一旦消息在队列中处于'活动状态'并且消息在计划的排队时间过去之前没有激活,我预计TTL'倒计时'将'开始'。

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

我的假设是否正确?

1 个答案:

答案 0 :(得分:3)

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

消息显示由用户代码设置的

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

如果消息在时间X处被入队,则队列上的TTL为5分钟而不是为单个消息指定的TTL不低,则该消息将在X + 1时出现在队列中。即EnqueuedTimeUtc将为X + 1. TimeToLive 5分钟,ExpiresAtUtc将计算为X + 1 + 5。

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