弄乱erlang和gen_event行为

时间:2009-11-27 20:05:35

标签: erlang

在我正在开发的概念证明中,我已经构建了以下方案:

   _ A _ _
  /  |  \ \
 SS  S   H CC
    / \
   C   C

其中: A - 申请

SS - 主管

CC - “真正的”客户

S - gen_server

H - gen_event

C - “内部”客户

该应用程序的工作方式类似于多路复用器。我在我的服务器上连接我的内部客户端并请求一些东西。然后我将此请求传递给我的真实客户端(巫婆连接到真实的应用程序)并将其分发给任何需要这种东西的内部客户端。

除了事件处理之外,一切正常工作:我想让我的内部客户端直接向gen_event处理程序发送消息,并且他将介入请求真实服务器/从缓存读取并回复客户端的过程。

我认为我需要在事件处理程序和客户端处理过程之间建立链接,这是对的吗?也许情况就是让事件处理程序成为一个全局进程,只是从客户端之间抽取消息?

很抱歉这个问题很长。

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解这个问题,但假设您正在使用某种消息开关来启用客户端以分布式方式交换消息,您可以查看一个我的项目就是这样做的:Mswitch

当然,如果您注册“全局流程”(可在本地和/或远程访问),您始终可以将消息传递给它,并让此过程按您认为合适的方式分发所述消息。一定不要忘记让不同仿真器实例中的进程相互通信(cookie同步和注册的VM名称)的常见缺陷。

答案 1 :(得分:-1)

如果您注册处理程序,它将具有全局已知的名称,然后您可以直接向其发送消息。