web-dev-qa-db-ja.com

rabbitmqを使用する必要があるのはなぜですか

Python Twistedと呼ばれる)より強力なネットワークフレームワークがあるのに、なぜRabbitMQが必要なのですか。誰かがRabbitMQを使用する理由を理解しようとしています。

RabbitMQを使用したシナリオまたは例を提供していただけませんか?

また、RabbitMQの使用方法に関するチュートリアルはどこにありますか?

54
fear_matrix

MOM(メッセージ指向ミドルウェア)を使用するのがおそらく最良の選択となるいくつかの理由をお話ししましょう。

デカップリング:

アプリケーションのコアコンポーネントを分離/分離できます。ここで、分離されたアーキテクチャのすべての利点をもたらす必要はありません。これは、高品質で保守可能なソフトウェアを作成するための主要な要件の1つであることを指摘したいと思います。

柔軟性:

AMQPプロトコルを使用して、異なる言語で記述された2つのまったく異なるアプリケーションを接続することは、実際には非常に簡単です。これらのアプリケーションは、MOMである「トランスレータ」の助けを借りて互いに通信します。

スケーラビリティ:

MOMを使用すると、システムを水平方向にスケーリングできます。 1つのメッセージプロデューサーが無制限の数のメッセージコンシューマーにタスク、コマンド、またはメッセージを送信して処理したり、このシステムをスケーリングしたりするために必要なのは、新しいメッセージコンシューマーを作成することだけです。 1秒あたり1000枚の画像を取得していて、サイズを変更する必要があるとします。この問題を従来の方法で解決することは頭痛の種になる可能性があります。 MOMを使用すると、非同期でジョブを実行し、データの整合性が損なわれていないことを確認できるメッセージコンシューマーに画像を送信できます。

これらはMOMを使用する他の利点でもありますが、これらの3つは私の意見では最も重要です。

30
hserge

Twistedはキューの実装ではありません。それとは別に、RabbitMQはエンタープライズレベルのキューイング機能を提供し、エンタープライズの世界でしばしば必要とされるAMQPプロトコルを実装します。

13
Andreas Jung

Twistedは、いくつかのネットワークプロトコルを実装するだけでなく、独自のプロトコルを作成できるネットワークライブラリです。 Twistedで使用できるプロトコルの1つはAMQPです https://launchpad.net/txamqp

RabbitMQはAMQPブローカーです。つまり、アプリケーションの外部で、おそらく別のサーバーのクラスターで実行されるサービスです。 AMQPは、RabbitMQのようなメッセージキューブローカーとの通信に使用されるプロトコルにすぎません。 RabbitMQから多くのものを入手します。アプリがクラッシュした場合や、RabbitMQブローカーが再起動された場合でも、メッセージが確実に配信されるようにメッセージを永続的に送信できます。同じキューに複数のコンシューマーがある場合、メッセージコンシューマー間で負荷分散が行われます。メッセージ本文に合理的にオープンなシリアル化形式を使用している限り、他の言語のアプリとの相互運用性が得られます。 AMQPを使用すると、モノリシックアプリを、さまざまなサーバーで実行できる疎結合された多くの部分に分割できます。これは、アプリケーションの長期保守にとって大きなメリットです。

10
Michael Dillon

rabbitmqは単なるメッセージングではなく、アプリケーションを相互接続する機能を持つ共通のプラットフォームです。 rabbitmq a Javaアプリケーションを使用すると、Linuxサーバーや.netアプリ、あるいはRuby&Rails = +企業のWeb開発でその場所を見つけるほとんどすべて。そして最も重要なことに、AMQPによって提案された「ファイアアンドフォーゲット」モデルを実装します。JMSまたはESBの完全な代替品です。特に、クロスプラットフォームアーキテクチャを扱っている場合、信頼性が保証されています。分散型Archでの開発を容易にするRPC(リモートプロシージャコール)と呼ばれる特別な機能もあります。

これらすべてとは別に、信頼性が高く効率的なルーティングが必要な証券取引所や株式市場などの世界の金融サービス(サービスに登録している人の実際の人数はわからないが、誰がそうするかを確認したい場合)そのため、現時点で接続されているか、後で接続されるかに関わらず、pingを受信します。これは、最低限のリソースを使用しながら高いパフォーマンスを保証するERLANGおよびOpen-telecomプラットフォームに基づいているため、rabbitmqルールです。 rabbitmqの最も便利な紹介については、ネイティブ開発言語についてrabbitmq.com/getstarted.htmlを参照してください。

5

RabbitMQは [〜#〜] amqp [〜#〜] の実装であり、メッセージ指向ミドルウェアの相互運用可能なプロトコルを定義します。そのため、任意のプラットフォームに実装できるメッセージの作成、公開、ルーティング、および消費のセマンティクスを定義しています。

概念的には、Twistedのようなネットワーキングエンジンの特殊化と見なすことができますが、業界で受け入れられている標準に基づいています。

以下は、相互運用可能なパブリッシュサブスクライブとAMQPの関心を論じているロスメイソンのブログです。 http://blogs.mulesoft.org/inter-operable-publishsubscribe-with-amqp/

4
David Dossot

Celery のメッセージブローカーとしてRabbitMQを使用しています。

また、Twistedを使用しています。 differentです。

[〜#〜] amqp [〜#〜]の詳細については、こちらをご覧ください: http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

2