-
Notifications
You must be signed in to change notification settings - Fork 180
/
queue.ex
31 lines (25 loc) · 1.05 KB
/
queue.ex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
defmodule Exq.Adapters.Queue do
@moduledoc ~S"""
Behaviour for creating Exq queue adapters
## Example
defmodule Exq.Adapters.Queue.CustomAdapter do
@behaviour Exq.Adapters.Queue
def enqueue(pid, queue, worker, args, options) do
{:ok, apply(worker, :perform, args)}
end
def enqueue_at(pid, queue, time, worker, args, options) do
enqueue_somehow(pid, queue, time, worker, args, options)
end
def enqueue_in(pid, queue, offset, worker, args, options) do
enqueue_in_somehow(pid, queue, offset, worker, args, options)
end
end
"""
@typedoc "The GenServer name"
@type name :: atom | {:global, term} | {:via, module, term}
@typedoc "The server reference"
@type server :: pid | name | {atom, node}
@callback enqueue(server, String.t(), module(), list(), list()) :: tuple()
@callback enqueue_at(server, String.t(), DateTime.t(), module(), list(), list()) :: tuple()
@callback enqueue_in(server, String.t(), integer(), module(), list(), list()) :: tuple()
end