質問
NodeJS でフォークされたサブプロセスに複数のメッセージ (文字列) を送信できないのはなぜですか? この回答は、それは不可能であると単純に述べていますが、説明はありません。
この質問がどのように生まれたか
これらのデータベースに複数回接続するのを避けるために、データベース接続をサブプロセスに送信する必要があります。
私のプログラムは、 Redis、OrientDB、Postgres、ElasticSearchの4 つの異なるサービスに接続します。
私はいくつかの重労働を行っており、複数のプロセスを使用し、すべてのプロセスをこれらのサービスに接続する必要があります。これらすべてのクライアントを保持するオブジェクトを作成しました。
var clients = {
redisClient: /* redis connection */
orientClient: /* orientdb connection */
pgClient: /* postgres connection */
elasticClient: /* elasticsearch connection */
};
しかし、クライアントをサブプロセスに送信すると:
var child = cp.fork(__dirname + '/singleCrawler.js');
child.send(clients);
次のエラーが表示されます。
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at ChildProcess.target.send (child_process.js:451:23)
この問題を抱えているのは私だけではありません。
問題に対する私の解決策
サービスを処理する別のプロセスを生成します。他のプロセスは、このプロセスと通信してサービスと対話します。