Packages
exq
0.20.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.2
Exq is a job processing library compatible with Resque / Sidekiq for the Elixir language.
Current section
Files
Jump to
Current section
Files
lib/exq/dequeue/behaviour.ex
defmodule Exq.Dequeue.Behaviour do
@moduledoc """
Custom concurrency or rate limiting at a queue level can be achieved
by implementing the Dequeue behaviour.
The following config can be used to customize dequeue behaviour for a queue:
config :exq,
queues: [{"default", {RateLimiter, options}}]
RateLimiter module should implement `Exq.Dequeue.Behaviour`. The
options supplied here would be passed as the second argument to the
`c:init/2` function.
### Life cycle
`c:init/2` will be invoked on initialization. The first argument will contain info
like queue and the second argument is user configurable.
`c:available?/1` will be invoked before each poll. If the
returned value contains `false` as the second element of the tuple,
the queue will not polled
`c:dispatched/1` will be invoked once a job is dispatched to the worker
`c:processed/1` will be invoked if a job completed successfully
`c:failed/1` will be invoked if a job failed
`c:stop/1` will be invoked when a queue is unsubscribed or before the
node terminates. Note: there is no guarantee this will be invoked if
the node terminates abruptly
"""
@callback init(info :: %{queue: String.t()}, args :: term) :: {:ok, term}
@callback stop(state :: term) :: :ok
@callback available?(state :: term) :: {:ok, boolean, term}
@callback dispatched(state :: term) :: {:ok, term}
@callback processed(state :: term) :: {:ok, term}
@callback failed(state :: term) :: {:ok, term}
end