pub enum JobResult {
Completed,
RetryAfter(Duration),
Snooze(Duration),
Cancel(String),
WaitForCallback(CallbackGuard),
}Expand description
Result of executing a job handler.
§Picking the right variant for re-runs
Three primitives can put the job back on the queue. They differ in what they say about why:
| Primitive | Means | Increments attempt | Delay shape |
|---|---|---|---|
JobError::Retryable | “this attempt failed; try again” | yes | DB-computed exponential backoff |
JobResult::RetryAfter | “this attempt failed; try again after delay X” | yes | caller-specified |
JobResult::Snooze | “this attempt didn’t fail — it’s just not time yet” | no | caller-specified |
Rule of thumb: if every “non-success” return is a “not yet” rather
than a failure (polling, waiting for an upstream signal, rate
limiting), use Snooze so max_attempts keeps its plain
meaning of bounding genuine failures. If the handler observed a
real failure and wants a specific retry delay rather than the
default exponential backoff, use RetryAfter. See
awa/examples/poll_until_deadline.rs for a deadline-bounded
polling example.
Variants§
Completed
Job completed successfully.
RetryAfter(Duration)
Job should be retried after the given duration. Increments
attempt. Use when this attempt failed and you want a
caller-specified delay instead of the default exponential
backoff produced by JobError::Retryable.
Snooze(Duration)
Job should be re-scheduled after the given duration without
counting as a failed attempt. Use for polling-style waits
where each “not yet” probe is normal — max_attempts should
only bound genuine handler failures, not the polling cadence.
Cancel(String)
Job should be cancelled. Records the reason in the job’s
errors column and sets state to cancelled — no DLQ, no
failure event. Use for graceful give-up (e.g. handler-side
deadline expiry, user-requested abort).
WaitForCallback(CallbackGuard)
Job is waiting for an external callback (webhook completion).
Obtain the required guard from ctx.register_callback() or
ctx.register_callback_with_config().
Trait Implementations§
Auto Trait Implementations§
impl Freeze for JobResult
impl RefUnwindSafe for JobResult
impl Send for JobResult
impl Sync for JobResult
impl Unpin for JobResult
impl UnsafeUnpin for JobResult
impl UnwindSafe for JobResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more