node.js と Scala (Java) を統合する最良の方法は何ですか?
これまでに見た最も簡単な方法は、Redis PubSub をメディエーターとして使用し、node.js サーバーで HTTP リクエストを処理し、リクエスト チャネルにメッセージを発行し ( redis-node-clientを介して)、Scala アクター ( Akka Redis PubSub 統合など) をサブスクライブすることです。リクエスト チャネルと、計算結果をレスポンス チャネルに発行します (ノードによってサブスクライブされます)。
3 に答える
Node.js を Scala Remote Actors に TCP 経由で直接接続する (マーシャリング メカニズムとして protobuf を使用) ための小さな概念実証ライブラリを実装しました。
Scala リモート アクター プロトコルを実装する node.js ライブラリが本当に最善の方法だとは思いません。現在のアプリケーションではうまく機能するかもしれませんが、3 番目のテクノロジをミックスに追加する必要がある場合はどうでしょうか。言語/プラットフォームごとに特別なサポート ライブラリを作成する必要がある場合、それが本当に最善でしょうか?
これらを統合する最善の方法は、すべての言語のアプリケーションを統合するための汎用テクノロジを使用することです。より具体的には、アクターベースのメッセージ送信をサポートするものです。幸いなことに、AMQP と ZeroMQ はどちらもそのスペースに収まり、どちらも node.js または scala で使用できます。さらに、AMQP と ZeroMQ のライブラリは、特別な目的の node-scala コネクタよりも頻繁に使用されるため、バグが修正され、新しいバージョンがサポートされる予定です。
JSON をメッセージ形式として使用すると仮定すると、lift フレームワーク内にいくつかの非常に優れた JSON 実装があることがわかります (これを Web フレームワークとして使用する必要はありません。lift からコンポーネントをうまく選択できます)。 -ユーティリティ)。
しかし、pubsub/actor モデルを使用したい場合 (そして、ニーズによっては適切な選択です)、既に提案したように、Akka よりもはるかに悪い結果になる可能性があります。