サービス ActiveMQ 設定
Message Queue Framework (MQF) は、 モジュール がメッセージをキューに公開できるようにする、Adobe Commerce内のシステムです。 また、メッセージを非同期で受信するコンシューマーも定義します。
MQF は、メッセージを送受信するためのスケーラブルなプラットフォームを提供するメッセージングブローカーとして ActiveMQ Artemis を使用できます。 また、未配信メッセージを保存するメカニズムも含まれています。 ActiveMQ Artemis は、メッセージング用の STOMP (Streaming Text Oriented Messaging Protocol)プロトコルをサポートしています。
ActiveMQ Artemis は、メッセージキューを管理するための RabbitMQ の代わりに使用できます。 これは、ActiveMQ 固有の機能が必要な場合や、STOMP プロトコルを使用する場合に特に便利です。
QUEUE_CONFIGURATION
環境変数を使用してサービスをサイトに接続します。master
ブランチを含む Pro 統合環境とスターター環境でのサービス設定については、以下の手順を使用します。
ActiveMQ Artemis を有効にするには:
-
必要な名前、タイプ、ディスク値(MB 単位)を、インストールされている ActiveMQ のバージョンとともに
.magento/services.yaml
ファイルに追加します。code language-yaml activemq-artemis: type: activemq-artemis:<version> disk: 1024
-
.magento.app.yaml
ファイルで関係を設定します。code language-yaml relationships: activemq-artemis: "activemq-artemis:activemq-artemis"
-
コードの変更を追加、コミット、プッシュします。
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>
services.yaml
および .magento.app.yaml
の構成ファイルを更新することで、インストールされているサービスのソフトウェア バージョンを変更できます。 サービスのアップグレードまたはダウングレードのガイダンスについては、 サービスバージョンの変更 を参照してください。デバッグ用に ActiveMQ に接続
デバッグの目的で、次のいずれかの方法でサービスインスタンスに直接接続できます。
- ローカル開発環境から接続する
- アプリケーションからの接続
- PHP アプリケーションからの接続
ローカル開発環境から接続する
-
magento-cloud
CLI にログインし、次のプロジェクトを実行します。code language-bash magento-cloud login
-
ActiveMQ Artemis がインストールおよび設定されている環境をチェックアウトします。
code language-bash magento-cloud environment:checkout <environment-id>
-
SSH を使用してクラウド環境に接続します。
code language-bash magento-cloud ssh
-
$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" } ] }
-
ActiveMQ へのローカルポート転送を有効にする(プロジェクトが US-3、EU-5、AP-3 などの別の地域にある場合は、
us-3
をeu-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 を使用します。 -
セッションが開いている間は、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
環境変数を使用してこの設定を上書きできます。