[仅限PaaS]{class="badge informative" title="仅适用于云项目(Adobe管理的PaaS基础架构)和内部部署项目上的Adobe Commerce 。"}
设置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.yamlcode language-bash git commit -m "Enable RabbitMQ service"code language-bash git push origin <branch-name>
连接到RabbitMQ以进行调试
出于调试目的,通过下列方式之一直接连接到服务实例会很有用:
- 从本地开发环境连接
- 从应用程序连接
- 从PHP应用程序连接
从本地开发环境连接
-
登录到
magento-cloudCLI和项目:code language-bash magento-cloud login -
查看已安装并配置RabbitMQ的环境。
code language-bash magento-cloud environment:checkout <environment-id> -
使用SSH连接到云环境:
code language-bash magento-cloud ssh -
从$MAGENTO_CLOUD_RELATIONSHIP变量中检索RabbitMQ连接详细信息和登录凭据:
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,请在文件中安装客户端(如amqp-utils.magento.app.yaml)作为项目依赖项。
例如,
dependencies:
ruby:
amqp-utils: "0.5.1"
登录PHP容器时,输入可用于管理队列的任何amqp-命令。
从PHP应用程序连接
要使用PHP应用程序连接到RabbitMQ,请将PHP库添加到源树中。