Simple Example for Dynamic Supervisor
defmodule Worker1 do | |
def start_link() do | |
Task.start_link(fn -> | |
Stream.repeatedly(fn -> :rand.uniform(1000) end) | |
|> Stream.each(&:timer.sleep/1) | |
|> Stream.each(fn _ -> IO.puts("worker 1") end) | |
|> Stream.run() | |
end) | |
end | |
end | |
defmodule Worker2 do | |
def start_link() do | |
Task.start_link(fn -> | |
Stream.repeatedly(fn -> :rand.uniform(1000) end) | |
|> Stream.each(&:timer.sleep/1) | |
|> Stream.each(fn _ -> IO.puts("worker 2") end) | |
|> Stream.run() | |
end) | |
end | |
end | |
options = [ | |
name: Dyn.Supervisor, | |
strategy: :one_for_one | |
] | |
DynamicSupervisor.start_link(options) | |
DynamicSupervisor.start_child(Dyn.Supervisor, %{ | |
id: Worker1, | |
start: {Worker1, :start_link, []} | |
}) | |
DynamicSupervisor.start_child(Dyn.Supervisor, %{ | |
id: Worker2, | |
start: {Worker2, :start_link, []} | |
}) | |
:timer.sleep(:infinity) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment