【问题标题】:Best way to communicate between node.js and java on the same host在同一主机上的 node.js 和 java 之间进行通信的最佳方式
【发布时间】:2014-09-03 16:25:51
【问题描述】:

我们有一个 node.js 进程通过child_process.fork 分叉其他 node.js 进程 - 在同一主机上。孩子和父母之间的交流是通过child.send(message)完成的。

现在我们希望主进程不仅启动 node.js 还启动 Java 进程。您认为 Java 和同一主机上的主 node.js 进程之间通信的最佳方式是什么?

【问题讨论】:

    标签: java javascript node.js ipc


    【解决方案1】:

    您可以探索很多“不到一小时”的选项。

    Node.js 和 Java 都可以访问的一些合适的媒体包括 D-BusNetwork socketsWebSocketsRedis publish/subscribeetcd,但这最终取决于您的平台/通信/应用程序要求(即etcd适用于服务发现和配置共享,但不适用于通用通信)。

    【讨论】:

    • 感谢您的回复,您提到的选项肯定很有趣,但是当我们与同一主机上的进程通信时,我使用网络感觉不对。任何其他选项,例如文件系统?
    • D-Bus 是您拥有的最快、最优雅的 IPC 选项,但它不是跨平台的。在 I/O 输出方面,其他依赖网络的选项将胜过任何你使用的依赖于执行磁盘 I/O 的选项。我不明白在同一主机上使用网络绑定 I/O 有什么问题,即 TCP/IP 与 Redis 在同一主机上是如此之快,以至于它会给您的进程正在执行的其他任务增加很少的延迟,而且适用于 99% 的基础设施的通信媒介。
    【解决方案2】:

    您还可以使用您生成的子进程的 stdin 属性 -

    Nodejs Child Process: write to stdin from an already initialised process

    并像这样在您的子进程中读取它 -

    https://nodejs.org/api/process.html#process_process_stdin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多