【发布时间】:2014-10-05 02:37:33
【问题描述】:
当我的 GenServer 从外部队列/主题接收消息时,它总是以 n handle_info [被从外部调用]结束。所以,只是想知道,
-
以这种方式接收所有消息是件好事,因为我必须始终通过评估消息来调用函数,或者还有其他方式。 例如,用户分享他的详细信息,向其他用户发送消息等。
我创建了一个 GenServer 并启动了该过程,现在客户端可以向某个队列发送消息以注册他们的详细信息[姓名、电话号码等]。
现在,当从客户端收到新消息时,我无法从 handle_info 获取任何 PID。 那么,我怎样才能使流程特定于该用户。
def handle_info({_, data}, state) do
{:noreply, state}
end
【问题讨论】:
-
您可以将消息中的
self发送到GenServer... -
不清楚您的问题是什么意思,但是您可以在任何地方调用 self 并获取执行时您所在的进程的 Pid。 GenServer 只是正常流程之上的一种通用行为。在这里您可以找到有关 GenServers 的好信息:learnyousomeerlang.com/clients-and-servers
-
调用 GenServer 的最佳方式是使用
GenServer.call/2。正如 Uri Agassi 指出的那样,如果您需要调用者,您可以使用self()显式传递它。
标签: elixir