[PaaS のみ]{class="badge informative" title="Adobe Commerce on Cloud プロジェクト(Adobeが管理する PaaS インフラストラクチャ)およびオンプレミスプロジェクトにのみ適用されます。"}

メッセージキューの概要

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

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

RabbitMQ (AMQP)

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

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

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

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

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

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

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

Apache ActiveMQ Artemis (STOMP)

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

NOTE
ActiveMQ Artemis は、Adobe Commerce 2.4.6 以降のバージョンで導入されました。

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

STOMP フレームワーク

STOMP フレームワーク・コンポーネント

  • パブリッシャー は、メッセージを宛先(キューまたはトピック)に送信するコンポーネントです。 公開先と、送信するメッセージの形式がわかります。

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

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

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

  • コンシューマー は、宛先からメッセージを受信します。 購読する宛先を把握し、様々な確認モード(自動、クライアントまたはクライアント個別)でメッセージを処理できます。

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

外部メッセージブローカを使用せずに、基本的なメッセージキューシステムをセットアップすることもできます。 このシステムでは、MySQL アダプタがメッセージをデータベースに格納します。 3 つのデータベース・テーブル(queuequeue_messagequeue_message_status)がメッセージ・キューのワークロードを管理します。 Cron ジョブは、コンシューマーがメッセージを受信できるようにします。 このソリューションは拡張性に欠けます。 RabbitMQ や Apache ActiveMQ Artemis などの外部メッセージブローカーは、実稼動環境にできるだけ使用する必要があります。

関連情報

インストールおよび設定手順については、以下を参照してください。

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