abstract class Mosquito::DequeueAdapter

Overview

A DequeueAdapter determines how the Overseer selects the next job to execute from the available queues.

Subclass DequeueAdapter, implement #dequeue, and assign an instance via Mosquito.configure:

class MyDequeueAdapter < Mosquito::DequeueAdapter
  def dequeue(queue_list : Mosquito::Runners::QueueList) : Mosquito::WorkUnit?
    queue_list.queues.each do |q|
      if job_run = q.dequeue
        return WorkUnit.of(job_run, from: q)
      end
    end
  end
end

Mosquito.configure do |settings|
  settings.dequeue_adapter = MyDequeueAdapter.new
end

Direct Known Subclasses

Defined in:

mosquito/dequeue_adapter.cr

Instance Method Summary

Instance Method Detail

abstract def dequeue(queue_list : Runners::QueueList) : WorkUnit | Nil #

Attempt to dequeue a job from one of the queues managed by queue_list.

Returns a WorkUnit when a job is available, or nil when all queues are empty.


def finished_with(job_run : JobRun, queue : Queue) : Nil #

Called by the Overseer when a job run has finished executing. Override this to react to completed jobs (e.g. update internal counters or rebalance queue weights).