Die Frage
Warum ist es in NodeJS nicht möglich, mehr als Nachrichten (Strings) an geforkte Unterprozesse zu senden? Diese Antwort besagt einfach, dass es nicht möglich ist, erklärt aber nicht warum.
Wie ist diese Frage entstanden
Ich muss Datenbankverbindungen an Unterprozesse senden, um zu verhindern, dass mehrmals eine Verbindung zu diesen Datenbanken hergestellt wird.
Mein Programm verbindet sich mit vier verschiedenen Diensten: Redis, OrientDB, Postgres und ElasticSearch.
Ich leiste schwere Arbeit und muss mehrere Prozesse verwenden und alle Prozesse mit diesen Diensten verbinden. Ich habe ein Objekt erstellt, um all diese Clients zu halten:
var clients = {
redisClient: /* redis Verbindung */
orientClient: /* orientdb Verbindung */
pgClient: /* postgres Verbindung */
elasticClient: /* elasticsearch Verbindung */
};
Aber wenn ich die Clients an Unterprozesse sende:
var child = cp.fork(__dirname + '/singleCrawler.js');
child.send(clients);
Bekomme ich den folgenden Fehler:
TypeError: Kreisförmige Struktur wird zu JSON umgewandelt
at Object.stringify (native)
at ChildProcess.target.send (child_process.js:451:23)
Ich bin nicht der einzige, der dieses Problem hat.
Meine Lösung für das Problem
Ich werde einen anderen Prozess starten, der die Dienste behandelt. Die anderen Prozesse werden mit diesem Prozess kommunizieren, um mit den Diensten zu interagieren.