web-dev-qa-db-ja.com

メッセージブローカーとMOM(メッセージ指向ミドルウェア)

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

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

27
user1577433

概要 -

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

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


あなたが尋ねたように:

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

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

MOMとは何ですか?

メッセージ指向ミドルウェア-アプローチ、分散システムのアーキテクチャ、つまり分散システム全体の中間層であり、内部通信がたくさんあります(コンポーネントがデータをクエリし、それを他のコンポーネントに送信する必要があります。コンポーネントはデータに対して何らかの処理を行うため、コンポーネント間で情報/データを共有する必要があります。要するに、それはシステムを設計する方法です。たとえば、全体的な要件に応じて、内部通信を備えた分散システムを開発する必要があります。 MOMアーキテクチャ/決定の最大の利点は、コンポーネントの分離です。つまり、データクエリコンポーネントを変更する場合、MOM(Rabbitmqクラスターなど)を介して通信するため、データ処理コンポーネントには影響しません。データ処理コンポーネントは、フォームメッセージでデータを取得し、フォームメッセージがそれらを解析して処理します。

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

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

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

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

AMQP-単なるルールのセットです。つまり、メッセージの公開、保持(キュー内)、消費、配信確認などの方法です。

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

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

19
Nabeel Ahmed

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

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

ブローカーはルーティングとキューイングパターンの特定のセットであり、通常、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ブローカーを作成するのは比較的簡単であり、これらのいくつかを実行しました(Majordomoなど)。

11
Pieter Hintjens

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

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

6