メッセージキューの概要

メッセージキューフレームワーク(MQF)は、モジュールがメッセージをキューに公開できるようにするシステムです。 また、メッセージを非同期で受信するconsumersも定義します。 MQFは、複数のメッセージングブローカーをサポートしています。

  • RabbitMQ - メッセージを送受信するためのスケーラブルなプラットフォームを提供するプライマリメッセージングブローカー。 未配信のメッセージを保存するメカニズムが含まれており、Advanced Message Queuing Protocol (AMQP) 0.9.1仕様に基づいています。
  • Apache ActiveMQ Artemis – 信頼性と拡張性の高いメッセージを作成するためにSTOMP (Simple Text Oriented Messaging Protocol)を使用する代替メッセージングブローカー。 Adobe Commerce 2.4.5以降で導入されました。

RabbitMQ (AMQP)

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

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

  • パブリッシャーは、メッセージを取引所に送信するコンポーネントです。 パブリッシュする取引所と、送信するメッセージの形式を把握できます。

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

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

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

  • 消費者はメッセージを受け取ります。 消費するキューがわかります。 メッセージのプロセッサを特定のキューにマッピングできます。

Apache ActiveMQ Artemis (STOMP)

RabbitMQの代わりに、Adobe Commerceでは、Simple Text Oriented Messaging Protocol (STOMP)を使用したメッセージングブローカーとしてApache ActiveMQ Artemisもサポートしています。

NOTE
ActiveMQ Artemisは、Adobe Commerce 2.4.5以降で導入されました。

次の図は、ActiveMQ Artemisを使用したSTOMP フレームワークを示しています。

STOMP フレームワーク ​

STOMP Framework コンポーネント

  • 発行者​は、宛先(キューまたはトピック)にメッセージを送信するコンポーネントです。 どの宛先に公開し、送信するメッセージの形式を把握できます。

  • STOMPの​ 宛先 ​は、AMQPの取引所と同様の役割を果たし、パブリッシャーからメッセージを受信してルーティングします。 STOMPでは、ドットを使用した階層的な命名パターンで直接宛先アドレス指定を使用します(例:customer.createdまたはinventory.updated)。

    Adobe Commerceでは、STOMP宛先に対して​ANYCAST アドレッシングモードを使用し、ポイントツーポイントのメッセージ配信を提供します。 ANYCAST モードでは、メッセージは利用可能なコンシューマーのプールから1人のコンシューマーにのみ配信され、複数のコンシューマーインスタンス間での負荷分散と作業配分が可能になります。

  • キュー​は、メッセージを格納するバッファーです。 ANYCAST アドレッシングを使用すると、複数のコンシューマーが同じ宛先に接続されている場合でも、キューは1つのコンシューマーにのみメッセージを確実に配信します。

  • 消費者​は、宛先からメッセージを受信します。 どの宛先を購読すべきかを把握し、異なる確認モード(自動、クライアント、またはクライアント個人)のメッセージを処理できます。

MySQL アダプタ (フォールバック)

外部メッセージブローカーを使用せずに、基本的なメッセージキューシステムを設定することもできます。 このシステムでは、MySQL アダプタがメッセージをデータベースに保存します。 3つのデータベース テーブル (queuequeue_message、およびqueue_message_status)がメッセージ キューのワークロードを管理します。 Cron ジョブは、消費者がメッセージを受信できるようにします。 このソリューションは拡張性が低い。 RabbitMQやApache ActiveMQ Artemisなどの外部メッセージブローカーは、本番環境でいつでも使用できます。

関連情報

インストールと設定の手順については、次を参照してください。

recommendation-more-help
commerce-operations-help-configuration