Que.Queue (Que v0.12.0)

Copy Markdown View Source

Module to manage a Queue comprising of multiple jobs.

Responsible for queueing (duh), executing and handling callbacks, for Que.Jobs of a specific Que.Worker. Also keeps track of running jobs and processes them concurrently (if the worker is configured so).

Meant for internal usage, so you shouldn't use this unless you absolutely know what you're doing.

Summary

Types

t()

A Que.Queue struct

Functions

Fetches the next Job in queue and returns a queue and Job tuple

Finds the Job in Queue by the specified key name and value.

Returns a new processable Queue with defaults

Processes the Queue and runs pending jobs

Adds one or more Jobs to the queued list

Returns queued jobs in the Queue

Removes the specified Job from running

Returns running jobs in the Queue

Finds a Job in the Queue by the given Job's id, replaces it and returns an updated Queue

Types

t()

@type t() :: %Que.Queue{queued: term(), running: term(), worker: term()}

A Que.Queue struct

Functions

fetch(q)

@spec fetch(queue :: t()) :: {t(), Que.Job.t() | nil}

Fetches the next Job in queue and returns a queue and Job tuple

find(queue, key \\ :id, value)

@spec find(queue :: t(), key :: atom(), value :: term()) :: Que.Job.t() | nil

Finds the Job in Queue by the specified key name and value.

If no key is specified, it's assumed to be an :id. If the specified key is a :ref, it only searches in the :running list.

new(worker, jobs \\ [])

@spec new(worker :: Que.Worker.t(), jobs :: [Que.Job.t()]) :: t()

Returns a new processable Queue with defaults

process(q)

@spec process(queue :: t()) :: t()

Processes the Queue and runs pending jobs

put(q, jobs)

@spec put(queue :: t(), jobs :: Que.Job.t() | [Que.Job.t()]) :: t()

Adds one or more Jobs to the queued list

queued(queue)

@spec queued(queue :: t()) :: [Que.Job.t()]

Returns queued jobs in the Queue

remove(q, job)

@spec remove(queue :: t(), job :: Que.Job.t()) :: t()

Removes the specified Job from running

running(queue)

@spec running(queue :: t()) :: [Que.Job.t()]

Returns running jobs in the Queue

update(q, job)

@spec update(queue :: t(), job :: Que.Job.t()) :: t()

Finds a Job in the Queue by the given Job's id, replaces it and returns an updated Queue