Everything stays as it is and we make sure each class of job runs in its own queue and never concurrently
- We will migrate to ActiveJob instead of running jobs directly on DelayedJobs.
- We are not going to be merging jobs into one for having more concentrated multipurpose jobs, so, lets keep things like they are right now.
- Adding code for failures while processing events wil be also not in this proposal but will be something mandatory to implement.
As we agreed for this option on to not run the same job concurrently... to have at most one job enqueued is something we may introduce. Could be something like this in every place we create and enque a job:
JobClass.perform_later if Delayed::Job.where(queue: JobClass.queue_as).count.zero?