31

メッセージ ブローカー (RabbitMQ など) とメッセージ指向ミドルウェアの違いについて少し混乱しています。ウィキペディアに載っているもの以外はあまり情報が見つかりません。MOM を検索すると、MOM のプロトコルである AMQP に関する情報が見つかりました。これはどういう意味ですか? ではMOMとは?また、RabbitMQ が AMPQ プロトコルを実装していることも読みました。それで、RabbitMQ がメッセージ ブローカーになるのはなぜですか? メッセージ ブローカーと MOM は同じものですか?

いくつかが私の混乱を解明できることを願っています。ありがとう

4

3 に答える 3

29

概要 -

  • プロトコル-一連のルール。
  • AMQP - AMQP は、メッセージを確実に送受信するためのオープンなインターネット プロトコルです。
  • MOM (メッセージ指向ミドルウェア) - アプローチ、分散システムのアーキテクチャです。つまり、分散システム全体の中間層であり、多くの内部通信が行われます (コンポーネントがデータを照会し、それを他のコンポーネントに送信する必要があります)。コンポーネント (データに対して何らかの処理を行う) であるため、コンポーネントはそれらの間で情報/データを共有する必要があります。
  • メッセージ ブローカ- メッセージ (送信と受信) を処理する (MOM 内の) 任意のシステムです。より正確には、特定のコンシューマ/受信者にメッセージをルーティングするシステムです。メッセージ ブローカは通常、MOM に基づいて構築されます。MOM は、アプリケーション間の基本的な通信を提供し、メッセージの永続性や配信の保証などを提供します。「メッセージ ブローカーは、メッセージ指向ミドルウェアのビルディング ブロックです。」
  • Rabbitmq - メッセージ ブローカー。MOM の実装。AMQP のオープンソース実装。ウィキペディアによると:

    RabbitMQ は、Advanced Message Queuing Protocol (AMQP) を実装するオープン ソースのメッセージ ブローカー ソフトウェア (メッセージ指向ミドルウェアと呼ばれることもあります) です。


あなたが尋ねたように:

MOM を検索すると、MOM のプロトコルである AMQP に関する情報が見つかりました。これはどういう意味ですか?

MOM は (分散) システム コンポーネント間にメッセージング ミドルウェア (中間層) を配置することであり、AMQP はメッセージを確実に送受信するためのプロトコル (一連のルール) です。そのため、MOM 実装 (つまり、Rabbitmq) は AMQP を使用できます。

ではMOMとは?

Message-Oriented-Middleware - アプローチであり、分散システムのアーキテクチャです。つまり、分散システム全体の中間層であり、多くの内部通信が行われます (コンポーネントがデータを照会し、それを他のコンポーネントに送信する必要があります)。そのため、コンポーネントはそれらの間で情報/データを共有する必要があります。簡単に言えば、システムを設計する方法です。たとえば、全体的な要件に応じて、分散システムを開発し、内部通信を行う必要があります。MOM アーキテクチャ/意思決定の最大の利点は、コンポーネントの分離です。つまり、データ クエリ コンポーネントを変更する場合、MOM を介して通信しているため、データ処理コンポーネントには影響しません (例:

最後の MOM は単なる設計上の決定であり、システム (分散) コンポーネントを接着するためのミドルウェア、それらの間の通信をメッセージ (つまり JSON) の形式で処理するためのミドルウェアを使用します。メッセージ指向のミドルウェアを実装するには、さらに必要なものがあります - 具体的なルールのセット、つまり、メッセージがどのように発行され、消費されるか、確認応答がどのように機能するか、メッセージの存続期間は消費されるまで、メッセージの持続性など. AMQP は、基本的にこれらの一連のルール、つまり MOM を実装するための標準/プロトコル、つまり AMQP を使用するメッセージング システムであり、規定されたルールによってそれ自体を制限することを意味します。ウィキペディアから:

AMQP は、SMTP、HTTP、FTP などが相互運用可能なシステムを作成したのと同じように、異なるベンダーの実装が相互運用可能な範囲で、メッセージング プロバイダーとクライアントの動作を義務付けています。

また、RabbitMQ が AMPQ プロトコルを実装していることも読みました。それで、RabbitMQ がメッセージ ブローカーになるのはなぜですか?

はい、Rabbitmq はメッセージ ブローカーです (パブリッシャー -> エクスチェンジ -> キュー -> コンシューマー)。これはオープン ソースの AMQP 実装です。つまり、AMQP (AMQP ルール) に限定されたメッセージング システム/ブローカーです。Rabbitmq をミドルウェア、つまり MOM として使用できます。

AMQP - 単なる一連のルールです。つまり、メッセージのパブリッシュ、(キューでの) 保持、消費、配信確認などの方法です。

メッセージ ブローカーと MOM は同じものですか?

簡単に言えば、はい。分散システムに MOM 設計を採用する必要がある場合は、Rabbitmq (メッセージ ブローカー、AMQP 実装) をミドルウェアとして使用できます。

于 2016-05-03T09:00:45.747 に答える
12

「MOM」とは、あるユーザー空間アプリケーションから別のユーザー空間アプリケーションに「メッセージ」を配信できるテクノロジを広く意味します。メッセージは通常、ストリームと比較して、個別の情報であると理解されています。

CORBA、JMS、TIBCO、WebsphereMQ などの MOM 製品は、以前は非常に大規模で複雑であり、単にメッセージを配信する以上のことを試みていました。

ブローカーはルーティングとキューイングのパターンの特定のセットであり、通常、MOM では特に「ブローカー」という用語を使用します (HTTP、電子メール、XMPP などと比較して)。ルーティングとは、1 つのメッセージが 1 つのピアに送信されることを意味します。キューイングとは、メッセージが配信される (場合によっては、確認される) まで、メッセージがメモリまたはディスクに保持されることを意味します。

AMQP はこれらのブローカー パターンを特定するために使用されていたため、アプリケーションは AMQP 互換のブローカーからの一貫した動作に依存することができました (したがって、RabbitMQ と OpenAMQ は、2 つの HTTP サーバーまたは 2 つの XMPP サーバーが同じように見えるように、クライアント アプリにはほとんど同じように見えました)。AMQP/1.0 はノード間の接続のみを指定するため、動作の保証はありません。これにより、企業は AMQP/1.0 を実装しやすくなりますが、相互運用性は提供されません。

ZeroMQ はメッセージ指向のミドルウェアであり、AMQP/1.0 のように、中央ブローカーの動作ではなくピース間の接続を定義します。ただし、0MQ を使用して MOM ブローカーを作成するのは比較的簡単です。

于 2012-11-04T10:59:33.537 に答える
7

メッセージブローカーは、(非常に人気のある)MOMの一種です。別の種類のMOMは、ZeroMQのようなブローカーレスMOMです。ブローカーベースのMOMでは、すべてのメッセージが1つの中心的な場所であるブローカーに送信され、そこから配信されます。ブローカーレスMOMは通常、ピアツーピアメッセージングを可能にします(ただし、中央サーバーのオプションも除外しません)。

AMQPはブローカーベースのMOMプロトコル定義(少なくとも1.0より前のすべてのバージョン。より一般的なMOMに移行します)であり、そのプロトコルを実装するいくつかの異なるメッセージブローカーがあります。RabbitMQはそのうちの1つにすぎません。

于 2012-11-04T09:52:04.257 に答える