Current section

Files

Jump to
x3m_rabbit lib supervisor.ex
Raw

lib/supervisor.ex

defmodule X3m.Rabbit.Supervisor do
use Supervisor
alias X3m.Rabbit
@moduledoc false
def start_link([prefix, bus_settings, configuration]),
do: start_link(prefix, bus_settings, configuration)
def start_link(prefix, bus_settings, configuration) do
prefix = Module.concat(prefix, X3m.Rabbit)
name = Module.concat(prefix, Supervisor)
Supervisor.start_link(__MODULE__, {prefix, bus_settings, configuration}, name: name)
end
def init({prefix, bus_settings, configuration}) do
connection_name = Module.concat(prefix, Connection)
channel_manager = Module.concat(prefix, ChannelManager)
consumers_name = Module.concat(prefix, Consumers)
children = [
{Rabbit.Connection, [bus_settings, [name: connection_name]]},
{Rabbit.ChannelManager, [connection_name, [name: channel_manager]]},
{Rabbit.Consumers, [channel_manager, configuration, [name: consumers_name]]}
]
Supervisor.init(children, strategy: :rest_for_one)
end
end