Erlang:Hooks vs gen_事件

Erlang:Hooks vs gen_事件,erlang,Erlang,问题是为什么一些应用程序(如ejabberd)使用自己的hooks模块(例如ejabberd_hooks.erl)而不是gen_事件?不要期望答案太有趣。要么是因为作者不熟悉gen_事件,要么是因为它在2004年添加ejabberd_钩子时表现不够好。ejabberd钩子和gen_事件是完全不同的事情。Ejabberd钩子由调用它们的进程进行评估-gen_事件处理程序在单个gen_事件进程中运行。由于Ejabberd需要为大多数消息运行许多钩子,因此将每个xmpp消息发送到许多不同的gen_事件

问题是为什么一些应用程序(如ejabberd)使用自己的hooks模块(例如ejabberd_hooks.erl)而不是gen_事件?

不要期望答案太有趣。要么是因为作者不熟悉gen_事件,要么是因为它在2004年添加ejabberd_钩子时表现不够好。

ejabberd钩子和gen_事件是完全不同的事情。Ejabberd钩子由调用它们的进程进行评估-gen_事件处理程序在单个gen_事件进程中运行。由于Ejabberd需要为大多数消息运行许多钩子,因此将每个xmpp消息发送到许多不同的gen_事件进程将无法获得像Ejabberd方法那样高的消息吞吐量。

我倾向于同意Christian的观点。+1,如果您的问题是针对您应该使用哪种方法?然后继续进行gen_活动,直到它不再满足您的需求。