消息评估

时间:2014-08-12 06:11:09

标签: elixir

当我的GenServer从外部队列/主题接收消息时,它总是结束n handle_info [从外部调用]。所以,只是想知道,

  1. 以这种方式接收所有消息是好的,因为我必须通过一直评估消息来调用函数,或者还有其他任何方式。 例如,用户分享他的详细信息,向其他用户发送消息等。

    我创建了一个GenServer并开始了这个过程,现在客户端可以将消息发送到某个队列来注册他们的详细信息[姓名,电话号码等]。

  2. 现在,当从客户端i收到的新消息无法从handle_info获取任何PID时。 那么,我该如何为该用户制作特定的流程。

  3.     def handle_info({_, data}, state) do
          {:noreply, state}
        end
    

1 个答案:

答案 0 :(得分:1)

由于您使用的是GenServer(或erlangs gen_server),因此您不应发送messeages进行显式处理(使用!),而应使用call之类的接口函数(如果您希望使用某些值)从服务器返回)和cast(如果您只想发送一些日期,并且不需要等待回复。

第二件事是你也不应该将你的模块客户端暴露给GenServer接口。而不是让他们调用GenServer:call,你应该将它包装在模块中的一些功能中。如果你实施了一个国王你反击,你可以写这样的东西

def increase(counter) do 
   GenServer.cast(conter, {:increase})
done

def get_count(counter) do 
   GenServer.call(counter, {get_coung})
done

并在各自的handle...函数中处理它们。