Method ClaimAsync
- Namespace
- Millrace.Storage.PostgreSql
- Assembly
- Millrace.Storage.PostgreSql.dll
ClaimAsync(ClaimRequest, CancellationToken)
Exclusively claims up to MaxCount jobs (§4.2.1–2).
public ValueTask<IReadOnlyList<JobRecord>> ClaimAsync(ClaimRequest request, CancellationToken ct)
Parameters
requestClaimRequestctCancellationToken
Returns
Remarks
A job is claimable iff State == Enqueued || (State == Processing &&
LeaseUntil <= now) — never Scheduled/Failed/Awaiting regardless of DueAt (due
activation happens only via ActivateDueJobsAsync(DateTimeOffset, int, CancellationToken)). Two concurrent claims
never return the same job. Claiming sets State = Processing,
WorkerId, LeaseUntil = now + LeaseDuration, and
increments Attempt. Selection order: Priority DESC, then
FIFO by enqueue completion order within equal priority (recommended: provider-local
monotonic insertion sequence), across the union of requested queues; observable only for
non-overlapping claims — interleaving under concurrency is permitted (SKIP LOCKED
semantics). Returning fewer than MaxCount is always conformant.