Thriftを使用して、それらを介してコミュニケーションを構築することをお勧めします。
Thriftには、必要な言語(JavaとJRuby)の両方に対応するジェネレーターがあり、良好で高速な通信を提供します。
更新:ThriftはFacebookで開発されたRPC(リモートプロシージャコール)フレームワークです。詳細については、 Wikiで読むことができます。
あなたの時間を節約するために一言で言えば、それは何であり、それをどのように使用するか:
データ構造とサービスインターフェイスを.thriftfile(files)で記述します。そして、このファイルから、1つまたはいくつかの言語(必要なもの)のすべての必要なソースファイル(すべてシリアル化が必要)を生成します。数行でサーバーとクライアントを簡単に作成できるよりも
クライアント内で使用すると、単純なクラスを使用しているように見えます。
Thriftを使用すると、使用したプロトコルとトランスポートを使用できます。ほとんどの場合、ブロックされたトランスポートまたはブロックされていないトランスポートを介してバイナリまたはコンパクトプロトコルを使用します。したがって、ネットワーク通信は、高速シリアル化により、軽量で高速になります。
SOAP(XML on HTTPに基づく)パッケージは、数倍大きく、バイナリデータの送信には不適切ですが、これだけではありません。また、XMLシリアル化は非常に遅いです。したがって、SOAPを使用すると、大きなオーバーヘッドが発生します。また、soapを使用すると、サーバー(小さなネットワーク層)を呼び出すためのlibを作成する(またはサードパーティを使用する)必要があります。
SMTPおよび基本的にJMSは、リアルタイムおよび質問と回答の通信には不適切です。つまり、メッセージをキューに入れるだけで、誰かがこのメッセージを送信して処理する必要がある場合は、JMSまたはその他のMQサービスを使用できます(使用する必要があります)(Thriftはこれを実行できますが、この問題にはMQアーキテクチャの方が適しています) )。ただし、リアルタイムのクエリ応答呼び出しが必要な場合は、RPCを使用する必要があります。プロトコルとしては、HTTP(REST、SOAP)、binary(Thrift、ProtoBuf、JDBCなど)などがあります。Thrift(およびProtoBuf)は、クライアントとサーバーを生成するためのフレームワークを提供するため、低レベルの問題からユーザーを保護します。
PS:私は過去にいくつかの例を作成しましたhttps://github.com/imysak/using-thrift(ThriftJavaサーバー+Javaクライアントまたはnode.jsクライアントを介した通信)、多分それは誰かのために役立つでしょう。しかし、もっと単純でより良い例を見つけることができます。