ActiveMQとRabbitMQとZeroMQの長所と短所の経験を聞いてみたいと思います。その他の興味深いメッセージキューに関する情報も歓迎します。
ActiveMQとRabbitMQとZeroMQの長所と短所の経験を聞いてみたいと思います。その他の興味深いメッセージキューに関する情報も歓迎します。
回答:
編集:私の最初の答えはAMQPに重点を置いていました。私はそれを書き直して、トピックについてより広い視野を提供することにしました。
これらの3つのメッセージングテクノロジーは、分散システムの構築に異なるアプローチを持っています。
RabbitMQは(Apache Qpidとともに)AMQPプロトコルの主要な実装の1つです。したがって、ブローカーアーキテクチャを実装します。つまり、メッセージはクライアントに送信される前に中央ノードでキューに入れられます。ルーティング、ロードバランシング、永続的なメッセージキューイングなどの高度なシナリオがほんの数行のコードでサポートされているため、このアプローチによりRabbitMQは非常に使いやすく、配備しやすくなります。ただし、中央ノードがレイテンシを追加し、メッセージエンベロープが非常に大きくなるため、スケーラビリティが低下し、「速度が低下」します。
ZeroMqは、金融業界で見られるような高スループット/低遅延のシナリオ用に特別に設計された非常に軽量なメッセージングシステムです。Zmqは多くの高度なメッセージングシナリオをサポートしていますが、RabbitMQとは異なり、フレームワークのさまざまな部分(例:ソケットとデバイス)を組み合わせてそれらのほとんどを自分で実装する必要があります。Zmqは非常に柔軟性がありますが、メッセージを送信するよりも複雑なことができるようになる前に、80ページ程度のガイド(Zmqを使用しない場合でも、分散システムを作成している人は読むことをお勧めします)を学ぶ必要があります2つのピア間。
ActiveMQはその中間にあります。Zmqと同様に、ブローカーとP2Pトポロジーの両方でデプロイできます。RabbitMQと同様に、高度なシナリオを実装する方が簡単ですが、通常は生のパフォーマンスが犠牲になります。それはメッセージングのスイスアーミーナイフです:-)。
最後に、3つの製品すべて:
なぜあなたは逃したスズメ、ムクドリ、チョウゲンボウ、アマゾンSQS、Beanstalkd、カフカ、IronMQを?
メッセージキューサーバー
メッセージキューサーバーは、Erlang(RabbitMQ)、C(beanstalkd)、Ruby(StarlingまたはSparrow)、Scala(Kestrel、Kafka)またはJava(ActiveMQ)のさまざまな言語で利用できます。短い概要はここにあります
すずめ
ムクドリ
チョウゲンボウ
RabbitMQ
Apache ActiveMQ
豆の木
Amazon SQS
カフカ
ZMQ
EagleMQ
IronMQ
これがお役に立てば幸いです。 ソース
あなたが知りたいよりも多くの情報:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
Paulがコメントに追加した内容を詳しく説明します。上記のページは2010年を過ぎると死んでしまいますので、少々の塩で読んでください。3年間で多くのものが変更されました。
それは本当にあなたのユースケースに依存します。
0MQをActiveMQまたはRabbitMQと比較するのは公平ではありません。ActiveMQとRabbitMQは、インストールと管理が必要なメッセージングシステムです。彼らは、ZeroMQよりもはるかに多くの機能を提供します。彼らは実際の永続的なキュー、トランザクションのサポートなどを持っています。
ZeroMQは軽量のメッセージ指向ソケット実装です。また、インプロセス非同期プログラミングにも適しています。ZeroMQを介して「エンタープライズメッセージングシステム」を実行することは可能ですが、自分で多くを実装する必要があります。
そう:
ActiveMQ、RabbitMQ、Websphere MQおよびMSMQは「エンタープライズメッセージキュー」です
ZeroMQはメッセージ指向のIPCライブラリです。
RabbitMQとActiveMQの比較はこちらにあります。そのままでは、ActiveMQはメッセージの配信を保証するように構成されています。これにより、信頼性の低いメッセージングシステムと比較して印象が遅くなる可能性があります。必要に応じて、パフォーマンスの設定をいつでも変更して、少なくとも他のメッセージングシステムと同じくらい優れたパフォーマンスを得ることができます。少なくともあなたはそのオプションを持っています。フォーラム、およびスケーリング、パフォーマンス、高可用性の構成に関するActiveMQ FAQには多くの情報があります。また、ActiveMQは、STOMPのような他のワイヤ形式とともに、仕様が確定したときにAMQP 1.0をサポートします。
ActiveMQのもう1つの利点は、Apacheプロジェクトであるため、開発者コミュニティには多様性があり、1つの会社に縛られていません。
ActiveMQやRabbitMQは使用していませんが、ZeroMQを使用しています。ZeroMQとActiveMQなどとの大きな違いは、0MQはブローカーがなく、メッセージ配信の信頼性が組み込まれていないことです。多くのメッセージングパターン、トランスポート、プラットフォーム、言語バインディングをサポートする使いやすいメッセージングAPIを探している場合、0MQは一見の価値があります。本格的なメッセージングプラットフォームを探している場合は、0MQが適切ではない可能性があります。
0MQの使用例については、www.zeromq.org / docs:cookbookを参照してください。
電力使用量監視アプリケーションでメッセージパッシングに0MQを正常に使用している(http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/を参照)
zeroMQを使用しています。シンプルなメッセージパッシングシステムが欲しかったので、ブローカーのような複雑な作業は必要ありません。また、Java指向の巨大なエンタープライズシステムも必要ありません。
高速でシンプルなシステムが必要で、複数の言語をサポートする必要がある場合(私はCと.netを使用しています)、0MQを検討することをお勧めします。
私はActiveMQについて2セントしか追加できませんが、これは最も人気のあるものなので、
書きたい言語は重要かもしれません。ActiveMQにはほとんどのクライアントがありますが、C#の実装は、Javaライブラリに比べて完全ではありません。
これは、一部の基本的な機能が不安定で(フェイルオーバープロトコルが...まあ...場合によっては失敗し、再配信のサポートがない)、他の機能は存在しないことを意味します。.NETはプロジェクトにとってそれほど重要ではないように思われるため、開発はかなり遅くなり、リリース計画もないようです。トランクは壊れていることが多いので、これを考慮した場合、先に進めたい場合はプロジェクトへの貢献を検討してください。
次に、多くの優れた機能を備えたActiveMQ自体がありますが、非常に奇妙な問題もいくつかあります。安定性の理由から、activemqのFuse(Progress)バージョンを使用していますが、それでも、覚えておきたい奇妙な「バグ」がいくつかあります。
あなたがその問題に耐えることができるならば、それは結局のところ、それはかなり素晴らしい製品です:
A).NETを使用するときに積極的に関与することを恐れない
B)Javaで開発する;-)
RabbitMQ ActiveMQとQPIDの機能とパフォーマンスの比較が
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/にあります
個人的には、上記の3つをすべて試しました。私によると、RabbitMQは賢い最高のパフォーマンスですが、フェイルオーバーとリカバリのオプションはありません。ActiveMQにはほとんどの機能がありますが、速度は遅くなります。
更新: HornetQも調査できるオプションです。JMSベースのソリューションを探している場合、ActiveMQより優れたオプションであるJMS Complaintです。
ActiveMQと同じ数のチューニング構成を持つアプリケーションはほとんどありません。ActiveMQを際立たせるいくつかの機能は次のとおりです。
構成可能なプリフェッチサイズ。構成可能なスレッド。構成可能なフェイルオーバー。プロデューサへの構成可能な管理通知。...詳細:
Abie、それはすべてあなたのユースケースに帰着します。他の誰かの使用例の説明に頼るのではなく、遠慮なくrabbitmq-discussリストに使用例を投稿してください。Twitterで質問すると、いくつかの回答も得られます。最高の願い、アレクシス
ZeroMQ aka 0MQについては、ご存知かもしれませんが、1秒あたりのメッセージ数が最も多くなります(前回チェックしたときに、refサーバーで1秒あたり約400万メッセージ)。ドキュメントは存在しません。サーバーの使用方法はもちろんのこと、サーバーの起動方法を見つけるのも難しいでしょう。これが、0MQについてまだ誰も貢献していない理由の1つだと思います。
楽しんで!
商用実装にも関心がある場合は、my-channelsからNirvanaを確認する必要があります。
Nirvanaは、金融サービス業界で大規模な低レイテンシトレーディングおよび価格配信プラットフォームに多用されています。
エンタープライズ、ウェブ、モバイルのドメイン全体で、幅広いクライアントプログラミング言語をサポートしています。
透過的なHAまたはロードバランシングが重要である場合、クラスタリング機能は非常に高度であり、一見の価値があります。
Nirvanaは開発目的で無料でダウンロードできます。