1. ホーム
  2. node.js

RabbitMQとSocket.ioの比較?

2023-08-02 09:52:31

質問

リアルタイムライブのWebアプリ開発をしています。

ブラウザのユーザーはnode.jsのサーバーを通して互いに通信できるようにする必要があります。一人のユーザーがメッセージを書き込むと、他のすべてのユーザーがそれを受け取ります。

RabbitMQがどのように機能するかはよくわかりません。しかし、ざっと読んだところでは、メッセージの発行/購読を処理するようです。

ブラウザの)ユーザが何かを発行し、(他のブラウザの)購読者がそのメッセージを取得する。これは、Socket.io が Web ソケットで行っていることではありませんか?

以下は私の質問です。

  1. それぞれのメリット/デメリットは何ですか?
  2. Socket.ioはRabbitMQの代わりになるのでしょうか?
  3. 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

http://socket.io/ :

Socket.IOはリアルタイムアプリケーションの実現を目指しています。 を可能にすることを目的としています。 すべてのブラウザで と モバイルデバイスで可能であり 異なる トランスポート・メカニズム間の差異を曖昧にします。

メリット

  • ブラウザ向け

デメリット

  • メッセージキューではありません。

Socket.ioはRabbitMQの代わりになるのでしょうか?

いいえ、できません。なぜなら、これらは2つの完全に異なるものだからです。あなたはリンゴとオレンジを比較しているのです。私が引用したサイトからの両方の説明を理解しようとする必要があります。