设置RabbitMQ服务

Message Queue Framework (MQF)是Adobe Commerce中的系统,它允许模块将消息发布到队列。 它还定义了异步接收消息的消费者。

MQF使用RabbitMQ作为消息代理,该消息代理为发送和接收消息提供了一个可伸缩的平台。 它还包括用于存储未传递消息的机制。 RabbitMQ基于高级消息队列协议(AMQP) 0.9.1规范。

WARNING
如果您希望使用现有的基于AMQP的服务(如RabbitMQ),而不是依靠Adobe Commerce基础架构为您创建,请使用QUEUE_CONFIGURATION环境变量将其连接到您的站点。

请按照以下说明在专业集成环境和入门环境(包括master分支)上进行服务设置。

NOTE
提交Adobe Commerce支持票证以更改Pro生产和暂存环境中的服务配置。

启用RabbitMQ

  1. 将所需的名称、类型和磁盘值(以MB为单位)与已安装的RabbitMQ版本一起添加到.magento/services.yaml文件中。

    code language-yaml
    rabbitmq:
        type: rabbitmq:<version>
        disk: 1024
    
  2. .magento.app.yaml文件中配置关系。

    code language-yaml
    relationships:
        rabbitmq: "rabbitmq:rabbitmq"
    
  3. 添加、提交和推送代码更改。

    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>
    
  4. 验证服务关系

TIP
在初始服务设置之后,您可以通过更新services.yaml.magento.app.yaml配置文件来更改已安装服务的软件版本。 有关升级或降级服务的指导,请参阅更改服务版本

连接到RabbitMQ以进行调试

出于调试目的,通过下列方式之一直接连接到服务实例会很有用:

  • 从本地开发环境连接
  • 从应用程序连接
  • 从PHP应用程序连接

从本地开发环境连接

  1. 登录到magento-cloud CLI和项目:

    code language-bash
    magento-cloud login
    
  2. 查看已安装并配置RabbitMQ的环境。

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. 使用SSH连接到云环境:

    code language-bash
    magento-cloud ssh
    
  4. $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"
          }
       ]
    }
    
  5. 启用到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
    
  6. 会话打开时,您可以从本地工作站启动您选择的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库添加到源树中。

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26