设置RabbitMQ服务
Message Queue Framework (MQF)是Adobe Commerce中的系统,它允许模块将消息发布到队列。 它还定义了异步接收消息的消费者。
MQF使用RabbitMQ作为消息代理,该消息代理为发送和接收消息提供了一个可伸缩的平台。 它还包括用于存储未传递消息的机制。 RabbitMQ基于高级消息队列协议(AMQP) 0.9.1规范。
QUEUE_CONFIGURATION
环境变量将其连接到您的站点。请按照以下说明在专业集成环境和入门环境(包括master
分支)上进行服务设置。
启用RabbitMQ:
-
将所需的名称、类型和磁盘值(以MB为单位)与已安装的RabbitMQ版本一起添加到
.magento/services.yaml
文件中。code language-yaml rabbitmq: type: rabbitmq:<version> disk: 1024
-
在
.magento.app.yaml
文件中配置关系。code language-yaml relationships: rabbitmq: "rabbitmq:rabbitmq"
-
添加、提交和推送代码更改。
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>
连接到RabbitMQ以进行调试
出于调试目的,通过下列方式之一直接连接到服务实例会很有用:
- 从本地开发环境连接
- 从应用程序连接
- 从PHP应用程序连接
从本地开发环境连接
-
登录到
magento-cloud
CLI和项目:code language-bash magento-cloud login
-
查看已安装并配置RabbitMQ的环境。
code language-bash magento-cloud environment:checkout <environment-id>
-
使用SSH连接到云环境:
code language-bash magento-cloud ssh
-
从$RabbitMQ_CLOUD_RELATIONSHIPS变量中检索MAGENTO连接详细信息和登录凭据:
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" } ] }
-
启用到RabbitMQ的本地端口转发(如果您的项目位于其他地区,如US-3、EU-5或AP-3地区,请将
us-3
/eu-5
/ap-3
替换为us
)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
-
会话打开时,您可以从本地工作站启动您选择的RabbitMQ客户端,该客户端配置为使用MAGENTO_CLOUD_RELATIONSHIPS变量中的端口号、用户名和密码连接到
localhost:<portnumber>
。
从应用程序连接
要连接到在应用程序中运行的RabbitMQ,请在.magento.app.yaml
文件中安装客户端(如amqp-utils)作为项目依赖项。
例如,
dependencies:
ruby:
amqp-utils: "0.5.1"
登录PHP容器时,输入可用于管理队列的任何amqp-
命令。
从PHP应用程序连接
要使用PHP应用程序连接到RabbitMQ,请将PHP 库添加到源树中。