サービス RabbitMQ 設定

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

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

WARNING
クラウドインフラストラクチャ上のAdobe Commerceを使用してサービスを作成するのではなく、RabbitMQ などの既存の AMQP ベースのサービスを使用する場合は、QUEUE_CONFIGURATION 環境変数を使用してサービスをサイトに接続します。

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

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

RabbitMQを有効にするには:

  1. 必要な名前、タイプ、ディスク値(MB 単位)を、インストールされているRabbitMQのバージョンと共に .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. $connection_CLOUD_RELATIONSHIPS 変数からRabbitMQMAGENTOの詳細とログイン資格情報を取得します。

    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 リージョンなど別のリージョンにある場合は、us の代わりに us-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. セッションが開いている間は、選択したRabbitMQ クライアントをローカルワークステーションから起動できます。このクライアントは、ポート番号、ユーザー名およびパスワード情報を使用して localhost:<portnumber> にMAGENTOするように設定されています。

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

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

以下に例を挙げます。

dependencies:
    ruby:
        amqp-utils: "0.5.1"

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

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

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

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26