Служебная шина Azure — TTL с ScheduledEnqueueTimeUtc

Очередь настроена с TTL (время жизни) 5 минут.

Когда вы добавляете сообщение с ScheduledEnqueueTimeUtc, равным 1 минуте, из UtcNow, срок действия сообщения истечет через 5 или 6 минут?

Мое предположение равно 6, потому что я ожидаю, что «обратный отсчет» TTL «начнется», как только сообщение станет «активным» в очереди, и сообщение не будет активным до тех пор, пока не пройдет запланированное время постановки в очередь.

Затем, если вы поставите сообщение в очередь на 6 минут, срок его действия истечет через 11 минут.

Верно ли мое предположение?


person wallismark    schedule 28.09.2016    source источник


Ответы (1)


Ваше предположение верно. В сообщении есть несколько свойств:

ScheduledEnqueueTimeUtc время появления сообщения, установленное кодом пользователя TimeToLive время жизни сообщения, установленное либо пользователем, либо объектом (в вашем случае очередью) EnqueuedTimeUtc - время только для чтения, когда сообщение было получено брокером ExpiresAtUtc - вычисленное время, когда сообщение истечет

Если сообщение поставлено в очередь в момент времени X, TTL в очереди составляет 5 минут и не ниже TTL, указанного для отдельного сообщения, то сообщение появится в очереди в X + 1 раз. т.е. EnqueuedTimeUtc будет X + 1. С TimeToLive 5 минут ExpiresAtUtc будет рассчитано как X + 1 + 5.

Следовательно, сообщение в очереди на 6 минут (X) не истечет до X + 11.

person Sean Feldman    schedule 28.09.2016