There are unique constraints for enqueueing jobs in Oban
, but not for dequeueing jobs.
Scenario:
I’m running a B2B SaaS that performs periodic tasks.
I want to run multiple jobs simultaneously, but one job for each organization.
For example,
defmodule MyWorker do
use Oban.Worker,
queue: :my_queue,
unique_dequeue: [fields: [:queue, :worker, :args], keys: [:org_id], period: 60] # <= I want this option, not enqueueing uniqueness
end
enqueueing jobs
- %{org_id: 1, report_id: 1}
- %{org_id: 1, report_id: 2}
- %{org_id: 2, report_id: 3}
All jobs are scheduled at the same time.
dequeueing job
- perform (org_id: 1, report_id: 1), (org_id: 2, report_id: 3) at once
- perform (org_id: 1, report_id: 2) after (org_id: 1, report_id: 1) is finished.
Is it possible in Oban
?