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

サービス ActiveMQ 設定

Message Queue Framework (MQF) ​ は、​ モジュール ​ がメッセージをキューに公開できるようにする、Adobe Commerce内のシステムです。 また、メッセージを非同期で受信するコンシューマーも定義します。

MQF は、メッセージを送受信するためのスケーラブルなプラットフォームを提供するメッセージングブローカーとして ActiveMQ Artemis を使用できます。 また、未配信メッセージを保存するメカニズムも含まれています。 ActiveMQ Artemis は、メッセージング用の STOMP (Streaming Text Oriented Messaging Protocol)プロトコルをサポートしています。

ActiveMQ Artemis は、メッセージキューを管理するための RabbitMQ の代わりに使用できます。 これは、ActiveMQ 固有の機能が必要な場合や、STOMP プロトコルを使用する場合に特に便利です。

IMPORTANT
クラウドインフラストラクチャ上のAdobe Commerceを使用してサービスを作成する代わりに、ActiveMQ などの既存の Message Broker サービスを使用する場合は、QUEUE_CONFIGURATION 環境変数を使用してサービスをサイトに接続します。

master ブランチを含む Pro 統合環境とスターター環境でのサービス設定については、以下の手順を使用します。

NOTE
Adobe Commerce サポートチケットを送信 ​ して、Pro 実稼動環境とステージング環境のサービス設定を変更します。

ActiveMQ Artemis を有効にするには:

  1. 必要な名前、タイプ、ディスク値(MB 単位)を、インストールされている ActiveMQ のバージョンとともに .magento/services.yaml ファイルに追加します。

    code language-yaml
    activemq-artemis:
        type: activemq-artemis:<version>
        disk: 1024
    
  2. .magento.app.yaml ファイルで関係を設定します。

    code language-yaml
    relationships:
        activemq-artemis: "activemq-artemis:activemq-artemis"
    
  3. コードの変更を追加、コミット、プッシュします。

    code language-bash
    git add .magento/services.yaml .magento.app.yaml
    
    code language-bash
    git commit -m "Enable ActiveMQ Artemis service"
    
    code language-bash
    git push origin <branch-name>
    
  4. ​ サービスの関係を確認します ​

TIP
サービスの初期セットアップ後、services.yaml および .magento.app.yaml の構成ファイルを更新することで、インストールされているサービスのソフトウェア バージョンを変更できます。 サービスのアップグレードまたはダウングレードのガイダンスについては、​ サービスバージョンの変更 ​ を参照してください。

デバッグ用に ActiveMQ に接続

デバッグの目的で、次のいずれかの方法でサービスインスタンスに直接接続できます。

  • ローカル開発環境から接続する
  • アプリケーションからの接続
  • PHP アプリケーションからの接続

ローカル開発環境から接続する

  1. magento-cloud CLI にログインし、次のプロジェクトを実行します。

    code language-bash
    magento-cloud login
    
  2. ActiveMQ Artemis がインストールおよび設定されている環境をチェックアウトします。

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. SSH を使用してクラウド環境に接続します。

    code language-bash
    magento-cloud ssh
    
  4. $MAGENTO_CLOUD_RELATIONSHIPS 変数から ActiveMQ 接続の詳細とログイン資格情報を取得します。

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    または

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    応答で、ActiveMQ 情報を見つけます。 関係名は、.magento.app.yaml ファイルでの設定方法によって異なります。 例えば、関係名として activemq-artemis を使用した場合は、次のようになります。

    code language-json
    {
       "activemq-artemis" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "stomp",
             "port" : 61616,
             "host" : "activemq-artemis.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. ActiveMQ へのローカルポート転送を有効にする(プロジェクトが US-3、EU-5、AP-3 などの別の地域にある場合は、us-3eu-5/ap-3/us に置き換えてください)

    code language-bash
    ssh -L <port-number>:activemq-artemis.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    

    http://localhost:8161 で ActiveMQ Artemis web コンソールにアクセスする例を次に示します。

    code language-bash
    ssh -L 8161:activemq-artemis.internal:8161 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
    note note
    NOTE
    ActiveMQ Artemis は、STOMP メッセージングにポート 61616 を使用し、Web コンソールにポート 8161 を使用します。
  6. セッションが開いている間は、MAGENTO_CLOUD_RELATIONSHIPS 変数のユーザー名とパスワードを使用して、http://localhost:8161 の ActiveMQ Artemis web コンソールにアクセスできます。

アプリケーションからの接続

アプリケーションで動作している ActiveMQ に接続するには、PHP アプリケーションに STOMP クライアントライブラリをインストールします。

PHP アプリケーションからの接続

PHP アプリケーションを使用して ActiveMQ に接続するには、ソースツリーに PHP STOMP ライブラリを追加します。 Adobe Commerceは ActiveMQ 通信に STOMP プロトコルを使用し、ActiveMQ Artemis が設定済みのサービスとして検出されると、デプロイメント時に設定が自動的に設定されます。

プロトコルのサポート

クラウドインフラストラクチャー上のAdobe Commerceの ActiveMQ Artemis は、STOMP (Streaming Text Oriented Messaging Protocol)プロトコルを使用します。

  • STOMP:キュー操作に使用されるメッセージングプロトコル(ポート 61616)
  • Web コンソール:HTTP 経由でアクセス可能な管理インターフェイス(ポート 8161)

RabbitMQ との違い

ActiveMQ Artemis と RabbitMQ は両方ともAdobe Commerceのメッセージブローカーとして機能しますが、いくつかの違いがあります。

  • プロトコル:ActiveMQ Artemis は STOMP プロトコルを使用するのに対して、RabbitMQ は AMQP を使用します
  • 設定:ActiveMQ Artemis が設定されると、Adobe Commerceは自動的に STOMP プロトコルを使用します
  • 優先度:ActiveMQ と RabbitMQ の両方が設定されている場合、STOMP ベースの操作は ActiveMQ が優先され、AMQP 操作では RabbitMQ が使用されます
  • Web コンソール: ActiveMQ は、キューとメッセージを監視するための web ベースの管理コンソールを提供します

キューの設定

ActiveMQ Artemis をサービスとして設定すると、Adobe Commerceはキューシステムを STOMP プロトコルを使用するように自動的に設定します。 設定は、デプロイメント時に app/etc/env.php ファイルに書き込まれます。

'queue' => [
    'stomp' => [
        'host' => 'activemq-artemis.internal',
        'port' => '61616',
        'user' => 'guest',
        'password' => 'guest'
    ],
    'default_connection' => 'stomp'
]

必要に応じて、QUEUE_CONFIGURATION 環境変数を使用してこの設定を上書きできます。

recommendation-more-help
7c2b03ac-000c-497d-aba3-2c6dc720a938