Current section
Files
Jump to
Current section
Files
lib/nsq/consumer/supervisor.ex
defmodule NSQ.Consumer.Supervisor do
use Supervisor
def start_link(topic, channel, config, opts \\ []) do
Supervisor.start_link(__MODULE__, {topic, channel, config}, opts)
end
def init({topic, channel, config}) do
consumer_name = String.to_atom("nsq_consumer_#{UUID.uuid4(:hex)}")
discovery_loop_id = String.to_atom("#{consumer_name}_discovery_loop")
rdy_loop_id = String.to_atom("#{consumer_name}_rdy_loop")
children = [
worker(NSQ.Consumer, [topic, channel, config, [name: consumer_name]]),
worker(Task, [NSQ.Consumer.Connections, :discovery_loop, [consumer_name]], id: discovery_loop_id),
worker(Task, [NSQ.Consumer.RDY, :redistribute_loop, [consumer_name]], id: rdy_loop_id),
]
supervise(children, strategy: :rest_for_one)
end
end