Packages
exq
0.8.1
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.ex
defmodule Exq do
require Logger
use Application
import Exq.Support.Opts, only: [top_supervisor: 1]
# Mixin Enqueue API
use Exq.Enqueuer.EnqueueApi
# See http://elixir-lang.org/docs/stable/elixir/Application.html
# for more information on OTP Applications
def start(_type, _args) do
start_link
end
# Exq methods
def start_link(opts \\ []) do
children = Exq.Support.Mode.children(opts)
Supervisor.start_link(children,
name: top_supervisor(opts[:name]),
strategy: :one_for_one,
max_restarts: 20,
max_seconds: 5)
end
def stop(nil), do: :ok
def stop(pid) when is_pid(pid), do: Process.exit(pid, :shutdown)
def stop(name) do
name
|> top_supervisor
|> Process.whereis
|> stop
end
@doc """
Subscribe to a queue - ie. listen to queue for jobs
* `pid` - PID for Exq Manager or Enqueuer to handle this
* `queue` - Name of queue
* `concurrency` - Optional argument specifying max concurrency for queue
"""
def subscribe(pid, queue) do
GenServer.call(pid, {:subscribe, queue})
end
def subscribe(pid, queue, concurrency) do
GenServer.call(pid, {:subscribe, queue, concurrency})
end
@doc """
Unsubscribe from a queue - ie. stop listening to queue for jobs
* `pid` - PID for Exq Manager or Enqueuer to handle this
* `queue` - Name of queue
"""
def unsubscribe(pid, queue) do
GenServer.call(pid, {:unsubscribe, queue})
end
end