4

Webからrabbitmqに接続するかどうかを決定しようとしています:

ソリューション 1. Rabbitmq ストンプ プラグイン + Rabbitmq Web ストンプ プラグイン + Sockjs

ソリューション 2. amqp nodejs プラグインによる Rabbitmq + nodejs

シナリオ:

a) キューをサブスクライブする Web アプリが 1 つある b) そのキューに書き込みを行う Java アプリが 1 つある c) 解決策 1 で 1 つのブラウザーを開き、解決策 2 で別のブラウザーを開いている

私は両方をテストしましたが、何が起こるかは次のとおりです。

連続して 10.000 メッセージを送信すると、解決策 2 は解決策 1 よりもはるかに高速です。解決策 2 は接続を失うことはありません。解決策 1 ほとんどの場合、(すべてのメッセージを取得する前に) ランダムな時間で接続が失われます。

質問:

  1. ソリューション 1 で更新できる制限構成はありますか?

  2. 解決策 1 の問題は、Sockjs によるものですか? ストンププラグイン?ストンプウェブプラグイン?それらのすべて?nodejs を途中で追加すると、rabbitmq に埋め込まれた erlang プラグイン (rabbitmq stomp /rabbitmq web stomp プラグイン) よりもはるかに高速である理由がわかりません。

    注: ストンプ プラグインまたはストンプ Web プラグインは死ぬことはありません。常にポートをリッスンし続けます。

  3. 私の簡単な説明は、ブラウザーはそれほど多くの連続したメッセージを処理できず、nodejs はこれをうまく処理できますが、rabbitmq Web ストンプはそうではないということです。しかし、単なる推測です。これは正しいです?もしそうなら、どうすれば解決できますか?

  4. 解決策 1 は、解決策 2 よりも (レイテンシーにおいても) 優れているべきではありませんか?

注: パブリッシャーに各メッセージの送信の間に 5 ミリ秒の差を追加すると、この問題はなくなり、解決策 1 は解決策 2 のように実行されます (10.000 メッセージの場合)。

回答ありがとうございます。

よろしくお願いします、

エドゥアルド

4

1 に答える 1

0

異なるプロトコルを使用してサーバー (node.js) と borwser クライアントを比較していますが、もちろんそれらは大きく異なります。STOMP プロトコルは、ブラウザー JS などのメッセージング用の軽量でシンプルなクライアント側を提供するのに役立ちます。

解決策 1 は、ブラウザーと SockJS が使用する接続の種類 (XHR、WebSocket、IFrame など) によって大きく異なる可能性があると思います。

于 2012-12-02T12:16:22.317 に答える