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

RabbitMQ サービスの設定

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

MQFはRabbitMQをメッセージングブローカーとして使用し、メッセージを送受信するためのスケーラブルなプラットフォームを提供します。 また、未配信のメッセージを保存するメカニズムも含まれています。 RabbitMQは、Advanced Message Queuing Protocol (AMQP) 0.9.1仕様に基づいています。

NOTE
Adobe Commerce on cloud infrastructureは、STOMP プロトコルを使用した代替メッセージキューサービスとしてActiveMQ Artemisもサポートしています。
IMPORTANT
RabbitMQのような既存のAMQP ベースのサービスを使用する場合は、クラウドインフラストラクチャ上のAdobe Commerceに依存して作成するのではなく、QUEUE_CONFIGURATION環境変数を使用してサイトに接続します。

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

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

RabbitMQ​を有効にするには:

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

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

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

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

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

デバッグ用にRabbitMQに接続

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

  • ローカル開発製品との連携
  • アプリケーションからの接続
  • PHP アプリケーションからの接続

ローカル開発製品との連携

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

    code language-bash
    magento-cloud login
    
  2. RabbitMQがインストールされ、設定された環境を確認します。

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

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

    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"])));'
    

    応答で、次のようなRabbitMQ情報を見つけます。

    code language-json
    {
       "rabbitmq" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "amqp",
             "port" : 5672,
             "host" : "rabbitmq.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. RabbitMQへのローカルポート転送を有効にします(プロジェクトがUS-3、EU-5、AP-3などの別の地域にある場合は、usus-3/eu-5/ap-3に置き換えます)

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

    http://localhost:15672のRabbitMQ管理web インターフェイスにアクセスする例を次に示します。

    code language-bash
    ssh -L 15672:rabbitmq.internal:15672 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
  6. セッションが開いている間に、MAGENTO_CLOUD_RELATIONSHIPS変数のポート番号、ユーザー名、パスワード情報を使用してlocalhost:<portnumber>に接続するように設定された、ローカルワークステーションから任意のRabbitMQ クライアントを開始できます。

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

アプリケーションで実行中のRabbitMQに接続するには、amqp-utilsなどのクライアントを、.magento.app.yaml ファイルのプロジェクト依存関係としてインストールします。

以下に例を挙げます。

dependencies:
    ruby:
        amqp-utils: "0.5.1"

PHP コンテナにログインすると、キューの管理に使用できるamqp- コマンドを入力します。

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

PHP アプリケーションを使用してRabbitMQに接続するには、ソースツリーにPHP ライブラリを追加します。

RabbitMQ サービスのトラブルシューティング

Adobe Commerce CloudでRabbitMQに接続できません」を参照してください。

RabbitMQ サービスをアップグレードしています

IMPORTANT
統合環境でRabbitMQをアップグレードする場合は、バージョンをスキップしないでください。 サポートされているのは​ シーケンシャルアップグレード ​のみです(例えば、3.8 → 3.9 → 3.10 → 3.11 → 3.12 → 3.13 → 4.0 → 4.1など)。各バージョンバンプは、クラウド環境のデプロイメントを成功させるために実際に対応する必要があります。
一般的なサービスのアップグレード手順については、​ サービスバージョンの変更を参照してください。
recommendation-more-help
7c2b03ac-000c-497d-aba3-2c6dc720a938