Amazon Message Queue の設定
Commerce 2.4.3 以降、オンプレミスのメッセージキューインスタンスの代わりに、Amazon Message Queue (MQ)をクラウド対応として使用できるようになりました。
AWSでメッセージキューを作成するには、AWS ドキュメントの Amazon MQ の設定を参照してください。
Commerce for AWS MQ の設定
AWS MQ サービスに接続するには、env.php
ファイルで queue.amqp
オブジェクトを設定します。
AWS Message Queue には SSL/TLS 接続が必要です。
'queue' => [
'amqp' => [
'host' => '[host]', //example: c-bf4kk1c5-5gcc-4b43-9b9e-8f5b54d234.mq.us-west-3.amazonaws.com
'port' => 5671,
'user' => 'yourusername',
'password' => 'yourpassword',
'virtualhost' => '/',
// AWS fields to add
'ssl' => 'true'
]
],
ここで、
host
- AMQP エンドポイントの URL。AWSでブローカ名をクリックすると使用可能になります(「https://」と末尾のポート番号を削除します)user
- AWS MQ ブローカの作成時に入力されたユーザ名の値password
- AWS MQ ブローカーの作成時に入力されたパスワード値
env.php
ファイルを編集した後、次のコマンドを実行してセットアップを完了します。
bin/magento setup:upgrade
CommerceでのAWS MQ サービスの使用方法
async.operations.all
メッセージ キューコンシューマーは、AMQP 接続を使用します。
このコンシューマーは、プレフィックスが async
の任意のトピック名をAWS MQ 接続を介してルーティングします。
例えば、InventoryCatalog
には次のものがあります。
async.V1.inventory.bulk-product-source-assign.POST
async.V1.inventory.bulk-product-source-unassign.POST
async.V1.inventory.bulk-product-source-transfer.POST
InventoryCatalog
のデフォルトの設定では、メッセージは RabbitMQ に公開されません。デフォルトの動作では、同じユーザースレッドでアクションを実行します。 メッセージを公開するように InventoryCatalog
に指示するには、cataloginventory/bulk_operations/async
を有効にします。 管理者で、ストア/設定/カタログ/在庫/管理者の一括操作に移動し、「Run asynchronously
はい」に設定します。
メッセージキューのテスト
Commerceから RabbitMQ へのメッセージ送信をテストするには:
-
キューを監視するには、AWSで RabbitMQ web コンソールにログインします。
-
管理者で、製品を作成します。
-
在庫ソースの作成。
-
ストア/設定/カタログ/在庫/管理者の一括操作/非同期で実行を有効にします。
-
カタログ/製品に移動します。 グリッドから、上記で作成した商品を選択し、「在庫の割り当てSource」をクリックします。
-
「保存して閉じる」をクリックして、プロセスを完了します。
これで、メッセージが RabbitMQ web コンソールに表示されます。
-
async.operations.all
メッセージキューコンシューマーを起動します。code language-bash bin/magento queue:consumers:start async.operations.all
これで、キューに入れられたメッセージが RabbitMQ web コンソールで処理されたことを確認できます。
管理画面で、製品の在庫ソースが変更されていることを確認します。