Expiration
A task will expire if it has not been dequeued before its expiration time. Expiration time can be set with optional
parameter expires_at
when enqueuing (expires_at
is defined as a timestamp in the future, not a delta). By default,
all tasks will expire in expires_in_seconds
retention period specified on the queue itself. An expired task will never
be returned from Dequeue
method.
Internally, all tasks are also indexed by expires_at
(Expiration index). Pictured below, a task A
is sheduled at t1
and will expire in e
seconds (queue retention period) at moment t1 + e
:

When a task is enqueued it is added to Expiration index on a default or specified expiration time, even if a task is delayed.

Expiration happens under the hood, tasks will be garbage collected when expires_at <= now
.
