在两个进程之间传递消息
Posted
技术标签:
【中文标题】在两个进程之间传递消息【英文标题】:Passing messages between two processes 【发布时间】:2017-04-13 09:23:11 【问题描述】:我正在构建一个有 2 个进程的系统。
流程 1
这个过程实际上是一个Node.js
程序。这个过程实际上是一个 Web Server 处理传入的请求。
流程 2
这个过程实际上是一个C++
程序。
在rc.local
的帮助下,这两个进程都会在启动时自动启动
现在,对于Process 1
,有一些特定的请求应该传递给Process 2
。
例如,如果Process 1
在路由/enqueue
收到带有JSON
正文有效负载的发布请求,则Process 1
应将JSON
字符串化并传递给Process 2
。
当Process 2
收到JSON
时,它应该终止一个工作线程并使用该JSON
启动一个新线程来执行实际任务。无论工作线程是否仍在处理之前的JSON
,工作线程都应该被杀死
如果两个进程都是Node.js
应用程序,我可以从Process 1
分叉Process 2
并使用以下代码。
process.on('message',function(message)
//implementation
...
process.send(data);
但我的第二个进程是C++
应用程序。
关于如何实现它的任何想法?
注意:在标记此问题之前,请记住我不是在寻找完整的代码。我只需要知道如何去做。
【问题讨论】:
通过 FFI 查看 MPI(例如 OpenMPI) 能否使用域 TCP 套接字转换消息,然后解析并在您的 cpp 进程中工作? 【参考方案1】:您不能为此目的使用 Nodejs 消息传递/事件处理工具,因为它是特定于 Node 的。
您需要使用操作系统的通信设施,例如 Unix、TCP、UDP 套接字或两个进程都可以通信的事件系统,例如 Redis 或 ZeroMQ。
【讨论】:
刚刚检查了 ZeroMQ。看起来真的很有希望。会尽快试一试以上是关于在两个进程之间传递消息的主要内容,如果未能解决你的问题,请参考以下文章