2017-04-13 5 views
0

Ich baue ein System mit zwei Prozessen.Nachrichten zwischen zwei Prozessen übergeben

Prozess 1
Dieser Vorgang ist tatsächlich ein Node.js Programm. Bei diesem Prozess handelt es sich tatsächlich um einen Webserver, der die eingehende Anforderung verarbeitet.

Prozess 2
Dieser Vorgang ist tatsächlich ein C++ Programm.

Beide Prozesse werden automatisch beim Start mit Hilfe von rc.local

Nun, für Process 1 gibt es einige konkrete Anfrage gestartet, die Process 2 übergeben werden sollen.

Wenn beispielsweise eine Process 1 POST-Anforderung an der Route empfängt /enqueue mit einer JSON Körper Nutzlast, soll die Process 1JSON stringify und Process 2 passieren.

Wenn Process 2 die JSON empfängt, sollte es einen Worker-Thread beenden und einen neuen Thread mit dieser JSON starten, um die eigentliche Aufgabe auszuführen. Der Arbeiter-Thread sollte unabhängig von getötet werden, ob der Arbeiter-Thread noch verarbeitet vorherigen JSON

Wenn beide Prozesse Node.js Anwendung waren, ich Process 2 von Process 1 und verwendet den folgenden Code gegabelt haben könnte.

process.on('message',function(message){ 
    //implementation 
} 
... 
process.send(data); 

Aber mein zweiter Prozess ist ein C++ App.

Irgendeine Idee, wie man es umsetzt?

Hinweis: Bevor Sie diese Frage markieren, beachten Sie bitte, dass ich nicht nach einem vollständigen Code suche. Ich brauche nur die Idee, wie es geht.

+0

Werfen Sie einen Blick auf MPI (z. B. OpenMPI) über das FFI – OMGtechy

+0

Könnten Sie Domäne TCP-Socket verwenden, um messge zu transformieren, dann analysieren und in Ihrem cpp-Prozess arbeiten? –

Antwort

1

Sie können die Nodejs Messaging/Eventing-Funktion nicht für diesen Zweck verwenden, da sie für Node spezifisch ist.

Sie müssen die Kommunikationseinrichtungen Ihres Betriebssystems wie Unix-, TCP-, UDP-Sockets oder ein Eventing-System verwenden, mit dem beide Prozesse kommunizieren können, wie Redis oder ZeroMQ.

+0

Habe gerade den ZeroMQ überprüft. Scheint wirklich vielversprechend. Werde es so schnell wie möglich versuchen –

Verwandte Themen