Packages
honeydew
1.0.0-rc1
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/failure_mode/requeue.ex
alias Experimental.GenStage
defmodule Honeydew.FailureMode.Requeue do
require Logger
alias Honeydew.Job
@behaviour Honeydew.FailureMode
def handle_failure(%Job{queue: queue, from: from} = job, reason, [queue: to_queue]) do
Logger.info "Job failed because #{inspect reason}, requeuing to #{inspect to_queue}: #{inspect job}"
# tell the queue that that job can be removed.
queue
|> Honeydew.get_queue
|> GenStage.cast({:ack, job})
{:ok, job} =
%{job | queue: to_queue}
|> Honeydew.enqueue
# send the error to the awaiting process, if necessary
with {owner, _ref} <- from,
do: send(owner, %{job | result: {:requeued, reason}})
end
end