设置Amazon消息队列
自Commerce 2.4.3起,Amazon Message Queue (MQ)可用作本地消息队列实例的云就绪替代项。
要在AWS上创建消息队列,请参阅 Amazon文档 中的设置AWS MQ。
为AWS MQ配置Commerce
要连接到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中单击Broker名称使用(删除“https://”和尾随端口号)user
— 创建AWS MQ代理时输入的用户名值password
— 创建AWS MQ代理时输入的密码值
编辑env.php
文件后,请运行以下命令以完成安装:
bin/magento setup:upgrade
Commerce如何使用AWS MQ服务
async.operations.all
消息队列使用者使用AMQP连接。
此使用者通过AWS MQ连接路由任何前缀为async
的主题名称。
例如,在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控制台中看到已处理排队消息。
在“管理员”中验证产品上的库存来源是否已更改。