Packages
verk
0.9.8
1.7.3
1.7.2
1.7.1
1.7.0
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.2
1.0.1
1.0.0
0.14.1
0.14.0
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.0
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
Verk is a job processing system backed by Redis.
Current section
Files
Jump to
Current section
Files
lib/verk/queue.ex
defmodule Verk.Queue do
@moduledoc """
This module interacts with a queue
"""
alias Verk.Job
@doc """
Counts how many jobs are enqueued on a queue
"""
@spec count(binary) :: integer
def count(queue) do
Redix.command!(Verk.Redis, ["LLEN", queue_name(queue)])
end
@doc """
Clears the `queue`
"""
@spec clear(binary) :: boolean
def clear(queue) do
Redix.command!(Verk.Redis, ["DEL", queue_name(queue)]) == 1
end
@doc """
Lists enqueued jobs from `start` to `stop`
"""
@spec range(binary, integer, integer) :: [Verk.Job.T]
def range(queue, start \\ 0, stop \\ -1) do
for job <- Redix.command!(Verk.Redis, ["LRANGE", queue_name(queue), start, stop]) do
Job.decode!(job)
end
end
@doc """
Deletes the job from the queue
"""
@spec delete_job(binary, %Job{} | binary) :: boolean
def delete_job(queue, %Job{ original_json: original_json }) do
Redix.command!(Verk.Redis, ["LREM", queue_name(queue), 1, original_json]) == 1
end
def delete_job(queue, original_json) do
Redix.command!(Verk.Redis, ["LREM", queue_name(queue), 1, original_json]) == 1
end
defp queue_name(queue), do: "queue:#{queue}"
end