View Source Changelog for Oban Pro v0.10
pro-worker
📷 📋 🔐 Pro Worker
The new Oban.Pro.Worker is a replacement for Oban.Worker with expanded
capabilities such as encryption, enforced structure, and output
recording. In addition, because Batch, Chunk, and Workflow workers
are based on the Pro worker, you can use all of the advanced options there as
well.
Here's a sample worker that's configured for encryption, recording, and enforced structure:
defmodule MyApp.SuperWorker do
use Oban.Pro.Worker,
queue: :super,
encrypted: [key: {Application, :fetch_env!, :secret_key}],
recorded: true,
structured: [keys: [:id, :ssn, :pin], required: [:id]]
@impl Oban.Pro.Worker
def process(%Job{args: %__MODULE__{} = args}) do
# Use the decrypted and structured args and record the result!
MyApp.Business.predict(args.id, args.ssn, args.pin)
end
end
# After the job runs, use `fetch_recorded` to view the return value
MyApp.SuperWorker.fetch_recorded(job)
# => {:ok, %{business: :done}}See more in the Pro Worker guide!
dynamic-queues
🌀 Dynamic Queues
The new DynamicQueues plugin extends Oban's basic queue management by
persisting changes across restarts, globally, across all connected nodes. It
also boasts a declarative syntax for specifying which nodes a queue will run on.
DynamicQueues are ideal for applications that dynamically start, stop, or
modify queues at runtime.
Here's a taste:
plugins: [{
Oban.Pro.Plugins.DynamicQueues,
queues: [
event: 30,
basic: [local_limit: 10, only: {:node, :=~, "web|worker"}],
audio: [local_limit: 20, only: {:node, :=~, "worker"}],
video: [local_limit: 30, only: {:node, :=~, "worker"}],
learn: [local_limit: 10, only: {:sys_env, "EXLA", "CUDA"}]
]
}]Check out the DynamicQueues guide for installation, configuration, complete typespecs, and a whole lot more reference.
v0-10-1-2022-02-28
v0.10.1 — 2022-02-28
bug-fixes
Bug Fixes
[DynamicCron] Strip out extraneous
timezoneoption before inserting a new scheduled job.[Pro.Worker] Strip out extraneous
stagesoption when building a job.
v0-10-0-2022-02-13
v0.10.0 — 2022-02-13
bug-fixes-1
Bug Fixes
[DynamicCron] Preserve unchanged attributes such as
paused,args, etc. on init.[DynamicCron] Respect the current timezone for
@rebootjobs. Previously,@rebootexpressions were evaluated on boot without the timezone applied. In that case the expression may not match the calculated time and jobs wouldn't trigger.[Chunk] Never calculate a negative timeout for chunks. Previously, during sudden periods of inactivity, it was possible for the waiting period to be negative.
[Batch] Ensure callbacks are only inserted once even when the callback condition matches multiple times.
[Batch] Overwrite unique keys for batch callbacks insertion to isolate them from any worker configuration.
[Batch] Remove
batch_idmatch for batch worker perform. It was an unnecessary barrier to unit testing batch jobs.
deprecations
Deprecations
[Lifeline]
Lifelineis deprecated in favor ofDynamicLifeline. The goal is to differentiate between the newBasicLifelinein Oban and the Pro version.[PG] The
PGnotifier was moved to Oban and is deprecated. Replace any references toOban.Pro.Plugins.PGwithOban.Plugins.PG.
removals
Removals
- [WorkflowManager] The long-deprecated
WorkflowManagerwas finally deleted.
changes
Changes
- [Oban] Require Oban
~> v2.11to make use of leadership for plugin activity.
For changes prior to 0.10 see the Oban 2.10 docs.