Сервисная шина Azure - TTL с ScheduledEnqueueTimeUtc
Очередь настроена с TTL (время жизни) 5 минут.
Когда вы добавите сообщение с ScheduledEnqueueTimeUtc, равным 1 минуте, из UtcNow, истекает ли сообщение через 5 минут или 6?
Мое предположение - 6, потому что я ожидал бы, что "обратный отсчет" TTL "запустится", как только сообщение было "активно" в очереди, и сообщение не будет активным, пока не пройдет запланированное время постановки в очередь.
Затем, если вы поместите сообщение в очередь на 6 минут, оно истечет через 11 минут.
Правильно ли мое предположение?
1 ответ
Ваше предположение верно. В сообщении есть несколько свойств:
ScheduledEnqueueTimeUtc
время появления сообщения устанавливается по коду пользователяTimeToLive
время жизни сообщения, установленное пользователем или объектом (в вашем случае очередь)EnqueuedTimeUtc
- время только для чтения, когда сообщение было получено брокеромExpiresAtUtc
- рассчитанное время истечения срока действия сообщения
Если сообщение помещено в очередь в момент времени X, TTL в очереди составляет 5 минут и не ниже TTL, указанного для отдельного сообщения, то сообщение появится в очереди в момент времени X + 1. Т.е. EnqueuedTimeUtc
будет Х + 1. С TimeToLive
5 минут, ExpiresAtUtc
будет рассчитываться как X + 1 + 5.
Поэтому сообщение, поставленное в очередь на 6 минут, теперь (X) не истечет до X + 11.