メッセージキューの概要

メッセージキューフレームワーク(MQF)は、モジュールがキューにメッセージを公開できるようにするシステムです。 また、メッセージを非同期で受信する コンシューマーも定義します。 MQF は、メッセージの送受信に使用できるスケーラブルなプラットフォームを提供するメッセージング ブローカーとして RabbitMQ を使用します。 また、未配信メッセージを保存するメカニズムも含まれています。 RabbitMQ は、Advanced Message Queuing Protocol (AMQP) 0.9.1 仕様に基づいています。

次の図に、メッセージキューフレームワークを示します。

メッセージキューフレームワーク

  • パブリッシャーは、メッセージを取引所に送信するコンポーネントです。 公開先の交換と、送信するメッセージの形式がわかります。

  • 交換機はパブリッシャーからメッセージを受信し、キューに送信します。 RabbitMQ は複数の種類の交換をサポートしていますが、Commerceではトピック交換のみを使用します。 トピックにはルーティングキーが含まれます。ルーティングキーには、ドットで区切られたテキスト文字列が含まれます。 トピック名の形式は string1.string2 です。たとえば、customer.created または customer.sent.email です。

    ブローカーでは、メッセージ転送のルールを設定する際にワイルドカードを使用できます。 アスタリスク(*)を使用すると 1 文字列を置き換え、シャープ記号(#)を使用すると 0 個以上の文字列を置き換えることができます。 例えば、customer.*customer.createcustomer.delete に対してフィルタリングしますが、customer.sent.email に対してはフィルタリングしません。 ただし、customer.#customer.createcustomer.deletecustomer.sent.email に対してフィルタリングします。

  • キューは、メッセージを格納するバッファです。

  • 消費者がメッセージを受信します。 使用するキューがわかります。 メッセージのプロセッサを特定のキューにマップできます。

基本的なメッセージキューシステムは、RabbitMQ を使用せずにセットアップすることもできます。 このシステムでは、MySQL アダプタがメッセージをデータベースに格納します。 3 つのデータベース・テーブル(queuequeue_messagequeue_message_status)がメッセージ・キューのワークロードを管理します。 Cron ジョブは、コンシューマーがメッセージを受信できるようにします。 このソリューションは拡張性に欠けます。 可能な限り RabbitMQ を使用すべきである。

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c