ActiveMQ または RabbitMQ または ZeroMQ または [closed] 質問する

ActiveMQ または RabbitMQ または ZeroMQ または [closed] 質問する

ActiveMQ、RabbitMQ、ZeroMQ の長所と短所に関する経験をお聞かせいただければ幸いです。その他の興味深いメッセージ キューに関する情報も歓迎します。

ベストアンサー1

編集:私の最初の回答は AMQP に重点を置いていました。このトピックについてより広い視点を提供するために書き直すことにしました。

これら 3 つのメッセージング テクノロジは、分散システムの構築に関して異なるアプローチを採用しています。

RabbitMQ は、AMQP プロトコルの主要な実装の 1 つです (Apache Qpid と並んで)。したがって、ブローカー アーキテクチャを実装しており、メッセージはクライアントに送信される前に中央ノードでキューに入れられます。このアプローチにより、ルーティング、負荷分散、永続的なメッセージ キューなどの高度なシナリオがわずか数行のコードでサポートされるため、RabbitMQ は非常に使いやすく、展開も容易です。ただし、中央ノードによってレイテンシが増加し、メッセージ エンベロープが非常に大きくなるため、スケーラビリティが低くなり、「遅く」なります。

ZeroMqは、金融業界で見られるような高スループット/低レイテンシのシナリオ向けに特別に設計された非常に軽量なメッセージングシステムです。Zmqは多くの高度なメッセージングシナリオをサポートしていますが、RabbitMQとは異なり、フレームワークのさまざまな部分(ソケットやデバイスなど)を組み合わせて、ほとんどのシナリオを自分で実装する必要があります。Zmqは非常に柔軟ですが、ガイドの約80ページ(Zmq を使用していない場合でも、分散システムを作成するすべての人に読むことをお勧めします) 2 つのピア間でメッセージを送信するよりも複雑なことを行う前に。

ActiveMQは中間的な位置にあります。Zmq と同様に、ブローカーと P2P トポロジの両方で展開できます。RabbitMQ と同様に、高度なシナリオを実装するのは簡単ですが、通常はパフォーマンスが犠牲になります。メッセージングの万能ナイフです :-)。

最後に、3 つの製品すべて:

  • 最も一般的な言語(C++、Java、.Net、Python、Php、Ruby、…)用のクライアント API を備えています。
  • 強力な文書化がある
  • 積極的にサポートされています

おすすめ記事