RabbitMQとSocket.ioの比較?
質問
リアルタイムライブのWebアプリ開発をしています。
ブラウザのユーザーはnode.jsのサーバーを通して互いに通信できるようにする必要があります。一人のユーザーがメッセージを書き込むと、他のすべてのユーザーがそれを受け取ります。
RabbitMQがどのように機能するかはよくわかりません。しかし、ざっと読んだところでは、メッセージの発行/購読を処理するようです。
ブラウザの)ユーザが何かを発行し、(他のブラウザの)購読者がそのメッセージを取得する。これは、Socket.io が Web ソケットで行っていることではありませんか?
以下は私の質問です。
- それぞれのメリット/デメリットは何ですか?
- Socket.ioはRabbitMQの代わりになるのでしょうか?
- Socket.ioでは不十分なWebアプリにRabbitMQが必要なシナリオはありますか?
どのように解決するのですか?
更新情報
<ブロッククオートRabbitMQが必要なシナリオはありますか? を必要とするシナリオはありますか? で十分な場合がありますか? ブラウザのユーザーは、node.jsサーバーを通じて互いに通信できる必要があります。一人の ユーザーの1人がメッセージを書くと、他のすべてのユーザーがそれを取得します。
このような単純な要件だけであれば、socket.ioだけで十分でしょう。 . 必要なのはメッセージだけ キュー は、オフラインで制御された方法でジョブ(重い)を処理したい場合にのみ必要です。
http://en.wikipedia.org/wiki/Message_queue :
メッセージキューは、非同期 通信プロトコルを提供します。 メッセージの送り手と受け手 メッセージキューと対話する必要がありません。 メッセージキューと同時にやりとりする必要がないことを意味します。
この文章は沈む必要があります。プロデューサー (1 つのプロセス) はジョブをキューに入れ、コンシューマーはキューからジョブを取り出して消費します。消費者は、ほとんどの場合、複数のプロセスで複数のジョブを同時に消費します。コンシューマは互いに、自分がどのジョブを消費しているのかを知ることができません。
<ブロッククオートこのため、キューは 先入れ先出し(FIFO)データ構造 構造になっています。
これはキューの重要な特性だと思います。beanstalkdのような高度なメッセージキューでは、ジョブに優先順位を与えることができますが、First-In-First-Outの特性は、。
これが少しでも意味をなしていればいいのですが......。)
リアルタイムライブのWebアプリ開発をしています。 開発をしています。
私たちがより良い答えを出せるように、もう少し詳しく説明していただけませんか?
<ブロッククオートRabbitMQがどのように動作するのかよくわかりません。 しかし、ざっと読んだところでは、次のように思われます。 メッセージの発行/購読を処理するようです。 メッセージの発行/購読を処理するようです。
下のメッセージキューに関する引用をご覧ください。しばらくの間、それを吸収してください。についてのWIKIを読むこともできます。 メッセージキュー .
ユーザーが(ブラウザで)何かを公開し を公開し、購読者(他の はそのメッセージを受け取ります。これは Socket.ioがウェブソケットでやっていること ウェブソケットで行っていることではありませんか?
Socket.ioは多くの異なるトランスポート(また、ウェブソケット)をサポートしており、ウェブソケットは、ほとんどのブラウザでサポートされていないため、それが必要です。しかし、例えば、Google Chromeはすでにwebsocketをサポートしています。私は、websocketが将来のトランスポートであると信じています(しかし、まだです!)。例えば Socket.ioのブラウザサポートページを見ると を見ると、Socket.io がすべての主要なブラウザ (一部は古いブラウザも) をサポートしていることに気がつくでしょう。素晴らしいのは、これを素晴らしい API で包んでいることです。
それぞれの利点/欠点は何ですか? をそれぞれ教えてください。
リンゴとオレンジを比べているのですから、それを比べるのはちょっとおかしいですね。
RabbitMQ
http://www.rabbitmq.com/tutorials/tutorial-one-python.html :
RabbitMQはメッセージブローカーです。その 主要なアイデアは非常にシンプルです。 メッセージの受信と転送を行います。これは郵便局と考えることができます。 郵便局のようなものだと考えてください。 郵便受けに郵便物を送れば ポストマンが最終的に 郵便受けに郵便物を送ると、郵便配達員がその郵便物を 届けてくれるということです。この比喩を使うと RabbitMQはポストボックスであり、郵便局であり、郵便配達人です。 であり、郵便配達人です。
メリット
デメリット
- ブラウザ用ではありません。
ソケット.io
Socket.IOはリアルタイムアプリケーションの実現を目指しています。 を可能にすることを目的としています。 すべてのブラウザで と モバイルデバイスで可能であり 異なる トランスポート・メカニズム間の差異を曖昧にします。
メリット
- ブラウザ向け
デメリット
- メッセージキューではありません。
Socket.ioはRabbitMQの代わりになるのでしょうか?
いいえ、できません。なぜなら、これらは2つの完全に異なるものだからです。あなたはリンゴとオレンジを比較しているのです。私が引用したサイトからの両方の説明を理解しようとする必要があります。
関連
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】Node.jsのホスト名/IPが証明書のaltnamesと一致しない。
-
[解決済み] MongoClient v3.0使用時、db.collectionが関数でない
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] node.js - リクエスト - "emitter.setMaxListeners() "はどのように?
-
[解決済み] socket.ioとwebsocketの違いについて
-
[解決済み] Websocketトランスポートの信頼性(再接続時のSocket.ioデータ損失)
-
[解決済み] RabbitMQ - メッセージの配信順序
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み] テスト
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] Express.js req.bodyが未定義です。