Elixir:gen_server的多个实例

时间:2017-12-22 11:56:13

标签: elixir

我有一个gen_server模块,它做了一些定期工作:从数据库中读取,写入另一个并休眠。我想缩放它并启动服务器的多个实例。我是通过以下方式完成的:

def children_spec do
    0..@workers_number - 1
    |> Enum.map(
     fn (i) ->
       process_name = String.to_atom("#{__MODULE__}.#{i}")
       Supervisor.child_spec({__MODULE__, name: process_name}, id: {__MODULE__, i})
     end
    )
end

该模块具有children_spec函数,该函数返回将添加到顶级应用程序主管列表中的子规范列表:

children = children ++ MyWorkerModule.children_spec()
Supervisor.init(children, strategy: :one_for_one)

还有其他办法吗?另外,我想到了模块的附加主管:simple_one_for_one策略

0 个答案:

没有答案