ActiveMQ サービスの設定

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

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

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

IMPORTANT
ActiveMQのような既存のメッセージブローカーサービスを使用する場合は、クラウドインフラストラクチャ上のAdobe Commerceに依存して作成するのではなく、QUEUE_CONFIGURATION環境変数を使用してサイトに接続します。

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

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

ActiveMQ Artemis​を有効にするには:

  1. インストールされているActiveMQ バージョンと共に、必要な名前、タイプ、およびディスク値(MB単位)を.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などの別の地域にある場合は、usus-3/eu-5/ap-3に置き換えます)

    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
    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を使用します
  • Configuration: 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
commerce-on-cloud-help-cloud-guide