Current section
Files
Jump to
Current section
Files
lib/mix/tasks/task_bunny.queue.reset.ex
defmodule Mix.Tasks.TaskBunny.Queue.Reset do
use Mix.Task
@shortdoc "Reset all queues in config files"
@moduledoc """
Mix task to reset all queues.
It deletes the queues and creates them again.
Therefore all messages in the queues are removed.
"""
alias TaskBunny.{Connection, Config, Queue}
@doc false
@spec run(list) :: any
def run(_args) do
Config.disable_auto_start()
Mix.Task.run("app.start")
_connections =
Enum.map(Config.hosts(), fn host ->
Connection.start_link(host)
end)
Config.queues()
|> Enum.each(fn queue -> reset_queue(queue) end)
end
defp reset_queue(queue) do
Mix.shell().info("Resetting queues for #{inspect(queue)}")
host = queue[:host] || :default
Queue.delete_with_subqueues(host, queue[:name])
Queue.declare_with_subqueues(host, queue[:name])
end
end