Packages
ash_oban
0.8.1
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0-rc.1
0.8.0-rc.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.6
0.2.5
0.2.4
0.2.3
0.2.3-rc.1
0.2.3-rc.0
0.2.2
0.2.1
0.2.0
0.1.14
0.1.13
0.1.12
0.1.11
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
The extension for integrating Ash resources with Oban.
Current section
Files
Jump to
Current section
Files
lib/errors/snooze_job.ex
# SPDX-FileCopyrightText: 2023 ash_oban contributors <https://github.com/ash-project/ash_oban/graphs/contributors>
#
# SPDX-License-Identifier: MIT
defmodule AshOban.Errors.SnoozeJob do
@moduledoc """
Raise or return this error from an action to snooze the Oban job.
Snoozing re-schedules the job to run again after a delay without consuming
a retry attempt. This is useful for transient conditions such as rate limits
or temporary external service unavailability.
Works from both the main action and the `on_error` action of a trigger, as
well as from scheduled actions.
## Fields
* `snooze_for` - integer number of seconds to delay before retrying
## Examples
# Via raise (works anywhere in action code):
raise AshOban.Errors.SnoozeJob, snooze_for: 60
# Via add_error (idiomatic inside a change function):
Ash.Changeset.add_error(changeset, AshOban.Errors.SnoozeJob.exception(snooze_for: 60))
# Via error tuple return:
{:error, AshOban.Errors.SnoozeJob.exception(snooze_for: 30)}
"""
use Splode.Error, fields: [:snooze_for], class: :framework
def message(%{snooze_for: snooze_for}) do
"Job snoozed for #{inspect(snooze_for)} seconds"
end
end