Сервисная шина 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.

Другие вопросы по тегам