mirror of
https://github.com/ash-project/ash_oban.git
synced 2024-09-20 05:13:15 +12:00
8.8 KiB
8.8 KiB
DSL: AshOban
Tools for working with AshOban triggers.
oban
Nested DSLs
- triggers
- trigger
- scheduled_actions
- schedule
Examples
oban do
triggers do
trigger :process do
action :process
where expr(processed != true)
worker_read_action(:read)
end
end
end
Options
Name | Type | Default | Docs |
---|---|---|---|
domain {: #oban-domain } |
module |
The Domain to use when calling actions on this resource. Defaults to the resource's domain. |
oban.triggers
Nested DSLs
Examples
triggers do
trigger :process do
action :process
where expr(processed != true)
worker_read_action(:read)
end
end
oban.triggers.trigger
trigger name
Examples
trigger :process do
action :process
where expr(processed != true)
worker_read_action(:read)
end
Arguments
Name | Type | Default | Docs |
---|---|---|---|
name {: #oban-triggers-trigger-name } |
atom |
A unique identifier for this trigger. |
Options
Name | Type | Default | Docs |
---|---|---|---|
action {: #oban-triggers-trigger-action .spark-required} |
atom |
The action to be triggered. Defaults to the identifier of the resource plus the name of the trigger | |
action_input {: #oban-triggers-trigger-action_input } |
map |
Static inputs to supply to the update/destroy action when it is called. Any metadata produced by read_metadata will overwrite these values. |
|
scheduler_queue {: #oban-triggers-trigger-scheduler_queue } |
atom |
The queue to place the scheduler job in. The same queue as job is used by default (but with a priority of 1 so schedulers run first). | |
debug? {: #oban-triggers-trigger-debug? } |
boolean |
false |
If set to true , detailed debug logging will be enabled for this trigger. You can also set config :ash_oban, debug_all_triggers?: true to enable debug logging for all triggers. |
scheduler_cron {: #oban-triggers-trigger-scheduler_cron } |
String.t | false |
"* * * * *" |
A crontab configuration for when the job should run. Defaults to once per minute ("* * * * *"). Use false to disable the scheduler entirely. |
stream_batch_size {: #oban-triggers-trigger-stream_batch_size } |
pos_integer |
The batch size to pass when streaming records from using c:Ash.stream!/2 . No batch size is passed if none is provided here, so the default is used. |
|
queue {: #oban-triggers-trigger-queue } |
atom |
The queue to place the worker job in. The trigger name is used by default. | |
record_limit {: #oban-triggers-trigger-record_limit } |
pos_integer |
If set, any given run of the scheduler will only ever schedule this many items maximum | |
log_errors? {: #oban-triggers-trigger-log_errors? } |
boolean |
true |
Whether or not to log errors that occur when performing an action. |
log_final_error? {: #oban-triggers-trigger-log_final_error? } |
boolean |
true |
If true, logs that an error occurred on the final attempt to perform an action even if log_errors? is set to false. |
worker_priority {: #oban-triggers-trigger-worker_priority } |
non_neg_integer |
2 |
A number from 0 to 3, where 0 is the highest priority and 3 is the lowest. |
scheduler_priority {: #oban-triggers-trigger-scheduler_priority } |
non_neg_integer |
3 |
A number from 0 to 3, where 0 is the highest priority and 3 is the lowest. |
max_scheduler_attempts {: #oban-triggers-trigger-max_scheduler_attempts } |
pos_integer |
1 |
How many times to attempt scheduling of the triggered action. |
max_attempts {: #oban-triggers-trigger-max_attempts } |
pos_integer |
1 |
How many times to attempt the job. After all attempts have been exhausted, the scheduler may just reschedule it. Use the on_error action to update the record to make the scheduler no longer apply. |
read_metadata {: #oban-triggers-trigger-read_metadata } |
(any -> any) |
Takes a record, and returns metadata to be given to the update action as an argument called metadata . |
|
state {: #oban-triggers-trigger-state } |
:active | :paused | :deleted |
:active |
Describes the state of the cron job. See the getting started guide for more information. The most important thing is that you do not remove a trigger from a resource if you are using oban pro. |
read_action {: #oban-triggers-trigger-read_action } |
atom |
The read action to use when querying records. Defaults to the primary read. This action must support keyset pagination. | |
worker_read_action {: #oban-triggers-trigger-worker_read_action } |
atom |
The read action to use when fetching the individual records for the trigger. Defaults to read_action . If you customize this, ensure your action handles scenarios where the trigger is no longer relevant. |
|
where {: #oban-triggers-trigger-where } |
any |
The filter expression to determine if something should be triggered | |
on_error {: #oban-triggers-trigger-on_error } |
atom |
An update action to call after the last attempt has failed. See the getting started guide for more. |
Introspection
Target: AshOban.Trigger
oban.scheduled_actions
A section for configured scheduled actions. Supports generic and create actions.
Nested DSLs
Examples
scheduled_actions do
schedule :import, "0 */6 * * *", action: :import
end
oban.scheduled_actions.schedule
schedule name, cron
Arguments
Name | Type | Default | Docs |
---|---|---|---|
name {: #oban-scheduled_actions-schedule-name } |
atom |
A unique identifier for this scheduled action. | |
cron {: #oban-scheduled_actions-schedule-cron } |
String.t |
The schedule in crontab notation |
Options
Name | Type | Default | Docs |
---|---|---|---|
action_input {: #oban-scheduled_actions-schedule-action_input } |
map |
Inputs to supply to the action when it is called. | |
action {: #oban-scheduled_actions-schedule-action } |
atom |
The generic or create action to call when the schedule is triggered. | |
queue {: #oban-scheduled_actions-schedule-queue } |
atom |
The queue to place the job in. Defaults to the resources short name plus the name of the scheduled action (not the action name). | |
state {: #oban-scheduled_actions-schedule-state } |
:active | :paused | :deleted |
:active |
Describes the state of the cron job. See the getting started guide for more information. The most important thing is that you do not remove a scheduled action from a resource if you are using oban pro. |
max_attempts {: #oban-scheduled_actions-schedule-max_attempts } |
pos_integer |
1 |
How many times to attempt the job. The action will receive a last_oban_attempt? argument on the last attempt, and you should handle errors accordingly. |
priority {: #oban-scheduled_actions-schedule-priority } |
non_neg_integer |
3 |
A number from 0 to 3, where 0 is the highest priority and 3 is the lowest. |
debug? {: #oban-scheduled_actions-schedule-debug? } |
boolean |
false |
If set to true , detailed debug logging will be enabled for this trigger. You can also set config :ash_oban, debug_all_triggers?: true to enable debug logging for all triggers. |
Introspection
Target: AshOban.Schedule