oban v0.2.0 Release Notes

Release Date: 2019-05-15 // almost 5 years ago
  • โž• Added

    • [Oban] Add pause_queue/2, resume_queue/2 and scale_queue/3 for dynamically controlling queues.
    • ๐Ÿ‘ท [Oban] Add kill_job/2 for terminating running jobs and marking them as discarded.
    • [Oban] Add config/0 for retreiving the supervisors config. This is primarily useful for integrating oban into external applications.
    • ๐Ÿ‘ท [Oban.Queue.Producer] Use database triggers to immediately dispatch when a job is inserted into the oban_jobs table.
    • ๐Ÿ‘ท [Oban.Job] Execution errors are stored as a jsonb array for each job. Each error is stored, not just the most recent one. Error entries contains these keys:
      • at The utc timestamp when the error occurred at
      • attempt The attempt number when the error ocurred
      • error A formatted error message and stacktrace, passed through Exception.blame/3
    • [Oban.Config] Validate all options based on type and allowed values. Any invalid option will raise, preventing supervisor boot.
    • [Oban.Notifier] Broadcast runtime gossip through pubsub, allowing any external system to get stats at the node and queue level.

    ๐Ÿ”„ Changed

    • [Oban.Queue.Supervisor] Set the min_demand to 1 for all consumers. This ensures that each queue will run the configured number of concurrent jobs. By default the min_demand is half of max_demand, which means a few slow jobs can prevent the queue from running the expected number of concurrent jobs.
    • ๐Ÿ‘ท [Oban.Job] Change psuedo-states based on job properties into fixed states, this applies to scheduled and retryable.
    • ๐Ÿ‘ท [Oban.Job] The "Elixir" prefix is stripped from worker names before storing jobs in the database. Module lookup performs the same way, but it cleans up displaying the worker name as a string.
    • ๐Ÿ‘ท [Oban.Job] Accept all job fields as changeset parameters. While not encouraged for regular use, this is essential for testing various states.