我正在为每个用户启动genserver,使用他们的ID作为名称。
def start_link(id) do
GenServer.start_link(__MODULE__, id, name: via_tuple(id))
end
defp via_tuple(id) do
{:via, :gproc, {:n, :l, {:id, id}}}
end
Api然后看起来像:
def state(id) do
GenServer.call(via_tuple(id), :state)
end
def handle_call(:state, _, state) do
{:reply, state, state}
end
希望问题有道理,但是可以通过exactor的导出选项注册这样的流程吗?所以整个api的东西最终会像:
defcall get(id), state: state, do: reply(state)
我看到ExActor.GenServer, export: {:via, :gproc, :calculator}
但无法获得用户ID。