Node.js的进程间事件发射器?

Gol*_*den 7 ipc message-queue interprocess node.js

目前,我在我的应用程序中使用EventEmitter2作为消息总线,我真的很喜欢它.

无论如何,现在我需要一个消息总线,它不仅可以在进程中工作,还可以在进程间工作.我理想的候选人会......

  • ...与EventEmitter2 API兼容("直接替换"),
  • ...在没有专用服务器或外部服务(例如数据库,消息队列......)的情况下工作,仅使用OS资源,
  • ...用纯JavaScript编写,
  • ...在内存中运行,因此它不需要持久性.

我该怎么办没有需要:

  • 它不需要在Windows上运行,OS X和Linux都可以.
  • 如果它只在一台机器上工作就没关系,它不需要具备网络意识.

任何想法或提示?

PS:如果你可以推荐一款可用的产品,这很好,但是如果你可以指引我自己做一个无服务器的方向,也没关系.

Pet*_*ons 11

以下是我看到它们的选项.

  1. process.fork/send.如果两个进程都是节点,则节点核心通过此API提供简单的,事件驱动的IPC机制.与它配对process.fork,所以如果你的过程是基于节点的主站和多个基于节点的工人/支持子流程,process.send可能是一个可行的选择.http://nodejs.org/docs/latest/api/all.html#all_child_process_fork_modulepath_args_options

    • 基于事件,但不是EventEmitter2 drop-in
    • 双向
    • 高效
    • 仅使用OS资源
    • 在记忆中
    • JavaScript的
  2. 使用节点核心的TCP网络通过unix域套接字进行连接.http://nodejs.org/docs/latest/api/all.html#all_net_connect_options_connectionlistener

    • 仍然是基于事件但是原始数据流而不是高级消息
    • 双向
    • 在记忆中
    • JavaScript的
  3. 好老TCP.

    • 仍然是基于事件但是原始数据流而不是高级消息
    • 双向
    • 在记忆中
    • JavaScript的
  4. 节点到节点socket.io

    • 基于事件,但不是EventEmitter2 drop-in
    • 双向
    • 在记忆中
    • JavaScript的

在所有情况下,一旦连接,您就会获得双向通信,但始终存在第一个对等体(TCP或socket.io中的服务器,process.fork中的父进程)和第二个对等体(TCP或socket.io中的客户端)的概念.进程中的子进程.fork).