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を有効にするには:
-
インストールされているActiveMQ バージョンと共に、必要な名前、タイプ、およびディスク値(MB単位)を
.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.yamlcode 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-cloudCLIにログインして、次のプロジェクトを実行します。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をus-3/eu-5/ap-3に置き換えます)code language-bash ssh -L <port-number>:activemq-artemis.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloudhttp://localhost:8161のActiveMQ Artemis Web コンソールにアクセスする例は次のとおりです。code language-bash ssh -L 8161:activemq-artemis.internal:8161 <project-ID>-<branch-ID>@ssh.us.magentosite.cloudnote 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を使用します
- 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環境変数を使用してこの設定を上書きできます。