【问题标题】:Messing with erlang and gen_event behaviour搞乱 erlang 和 gen_event 行为
【发布时间】:2010-12-21 02:16:24
【问题描述】:

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

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

其中: A - 应用程序

SS - 主管

CC - “真正的”客户

S - gen_server

H - gen_event

C - “内部”客户端

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

除了事件处理之外,一切都运行良好:我想让我的内部客户端直接将消息发送到 gen_event 处理程序,并且他将在向真实服务器请求/从缓存读取和回复客户端的过程中居中。

我想我需要在事件处理程序和我的客户端处理过程之间建立一个链接,对吗?也许是让事件处理程序成为一个全局进程并且只是从客户端之间泵送消息?

抱歉问题太长了。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    如果你注册了处理程序,它将有一个全球已知的名称,然后你可以直接向它发送消息。

    【讨论】:

    • 是的,我知道!但是如果我使用“!”传递消息,它将在handle_event的函数上处理?
    • 不,由handle_info处理。
    【解决方案2】:

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

    当然,如果您注册一个“全局进程”(可在本地和/或远程访问),您可以随时将消息传送给它,并让该进程按照您认为合适的方式分发所述消息。确保不要忘记使不同模拟器实例中的进程相互通信的常见缺陷(cookie 同步和注册的 VM 名称)。

    【讨论】:

    • 谢谢,我会看看你的项目。
    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2015-04-06
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多