All notable changes to Oban.Pro will be documented in this file.


  • [Oban.Plugins.DynamicPruner] Allow state overrides when pruning cancelled jobs.


  • [Oban.Pro.Workers.Workflow] A new worker that composes arbitrary jobs together for directed execution. This allows sequential, fan-out and fan-in workflows that are horizontally distributed and fault tolerant.

    See the Workflow docs for setup and a walk-through with use-cases.

  • Bump Oban dependency to ~> 2.3.0 due to the workflow worker's use of the new meta field in Oban.Job.


  • [Oban.Pro.Plugins.DynamicPruner] Always delete oldest job when pruning in max_len mode. In max_len mode, when job insertion exceeded job pruning the oldest jobs would persist between prunes.



  • Upgrade Oban dependency to ~> 2.2.0 along with fixes for the move to Oban.Registry and Oban.Repo.



  • [Oban.Pro.Plugins.DynamicCron] The DynamicCron plugin is a replacement for Oban's built in cron scheduler. It supports adding, updating, deleting, pausing and resuming periodic jobs at runtime and boot time. It is an ideal solution for applications that must dynamically start and manage scheduled tasks at runtime.

    See the DynamicCron installation docs for instructions on getting started.

  • [Oban.Pro.Plugins.Lifeline] Add :retry_exhausted option, which will retry exhausted jobs rather than discard them while rescuing.

Breaking Change

  • Emit standardized [:oban, :plugin, :start | :stop | :exception] events for all plugins. Previously, each plugin would emit its own event, which required extensive :telemetry.attach_many calls. Now all plugins have a standard event name with differentiated metatada, including a :plugin key with the module name responsible for emitting the event.

    To upgrade replace any events that used :prune, :lifeline or :reprioritizer with :plugin. For example, [:oban, :prune, :start] is now [:oban, :plugin, :start] with the metadata %{plugin: DynamicPruner}.


  • [Oban.Pro.Plugins.DynamicPruner] Correctly prune discarded jobs that were cancelled before they were ever attempted.



  • [Oban.Pro.Workers.Batch] Only invoke batch callbacks that are defined for the current worker.



  • [Oban.Pro.Plugins.Lifeline] Ignore unknown messages to the plugin to prevent crashes.


  • Bump Oban dependency to 2.0.0

v0.2.1 — 2020-07-01


  • Add handle_exhausted/1 callback to Oban.Pro.Workers.Batch worker. This new callback is triggered when all jobs are either completed or discarded.

v0.2.0 — 2020-06-12


  • Conditional improvements to the BatchManager plugin


  • Bump Oban dependency to 2.0.0-rc.1

v0.1.0 — 2020-06-03

Initial release including these plugins:

  • Oban.Pro.Plugins.BatchManager
  • Oban.Pro.Plugins.DynamicPruner
  • Oban.Pro.Plugins.Lifeline
  • Oban.Pro.Plugins.Reprioritizer

As well as the Oban.Pro.Workers.Batch worker.