Packages
honeydew
1.2.0
1.5.0
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.0
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc4
1.0.0-rc3
1.0.0-rc2
1.0.0-rc1
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Pluggable local/clusterable job queue focused on safety.
Current section
Files
Jump to
Current section
Files
lib/honeydew/queue_monitor.ex
# when a queue dies, this process hears about it and stops its associated worker group.
defmodule Honeydew.QueueMonitor do
use GenServer
require Logger
defmodule State do
defstruct [:workers_per_queue_pid, :queue_pid]
end
def start_link(opts) do
GenServer.start_link(__MODULE__, opts)
end
def init([workers_per_queue_pid, queue_pid]) do
Process.monitor(queue_pid)
{:ok, %State{workers_per_queue_pid: workers_per_queue_pid, queue_pid: queue_pid}}
end
def handle_info({:DOWN, _, _, queue_pid, _}, %State{workers_per_queue_pid: workers_per_queue_pid, queue_pid: queue_pid} = state) do
Logger.info "[Honeydew] Queue process #{inspect queue_pid} on node #{node queue_pid} stopped, stopping local workers."
Supervisor.stop(workers_per_queue_pid)
{:noreply, state}
end
def handle_info(msg, state) do
Logger.warn "[QueueMonitor] Received unexpected message #{inspect msg}"
{:noreply, state}
end
end