Oban worker for durable webhook processing.
When Oban is available, webhooks are enqueued as jobs instead of
being dispatched via Task.Supervisor. This provides:
- Durability — jobs survive application restarts
- Retry logic — configurable retry with exponential backoff
- Dead-letter queue — failed jobs are retained for inspection
- Visibility — jobs visible in Oban Web
- Concurrency control — queue-level concurrency limits
Setup
# In your Oban config:
config :my_app, Oban,
queues: [plaid_webhooks: 10],
plugins: [Oban.Plugins.Pruner]This module is only compiled when Oban is available as a
dependency — Code.ensure_loaded?/1 is checked here, wrapping the
entire module definition, because use Oban.Worker is a
compile-time macro expansion and cannot be guarded from inside the
module body.