Configurar el servicio RabbitMQ

Message Queue Framework (MQF) es un sistema de Adobe Commerce que permite que un módulo publique mensajes en colas. También define los consumidores que reciben los mensajes de forma asincrónica.

El MQF usa RabbitMQ como agente de mensajería, que proporciona una plataforma escalable para enviar y recibir mensajes. También incluye un mecanismo para almacenar mensajes no enviados. RabbitMQ se basa en la especificación 0.9.1 del Protocolo avanzado de Message Queue Server (AMQP).

WARNING
Si prefiere usar un servicio basado en AMQP existente, como RabbitMQ, en lugar de depender de Adobe Commerce en la infraestructura en la nube para crearlo, use la variable de entorno QUEUE_CONFIGURATION para conectarlo a su sitio.

Siga estas instrucciones para la configuración del servicio en entornos de integración profesional y entornos de inicio, incluida la rama master.

NOTE
Envíe un ticket de soporte de Adobe Commerce para cambiar la configuración del servicio en los entornos de ensayo y producción de Pro.

Para habilitar RabbitMQ:

  1. Agregue el nombre, tipo y valor de disco necesarios (en MB) al archivo .magento/services.yaml junto con la versión de RabbitMQ instalada.

    code language-yaml
    rabbitmq:
        type: rabbitmq:<version>
        disk: 1024
    
  2. Configure las relaciones en el archivo .magento.app.yaml.

    code language-yaml
    relationships:
        rabbitmq: "rabbitmq:rabbitmq"
    
  3. Agregue, confirme e inserte los cambios de código.

    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. Compruebe las relaciones de servicio.

TIP
Después de la instalación inicial del servicio, puede cambiar la versión del software de un servicio instalado actualizando los archivos de configuración services.yaml y .magento.app.yaml. Consulte Cambiar la versión del servicio para obtener instrucciones sobre cómo actualizar o degradar un servicio.

Conectarse a RabbitMQ para depurar

Para fines de depuración, es útil conectarse directamente a una instancia de servicio de una de las siguientes maneras:

  • Conéctese desde su entorno de desarrollo local
  • Conectar desde la aplicación
  • Conéctese desde su aplicación PHP

Conéctese desde su entorno de desarrollo local

  1. Inicie sesión en la CLI de magento-cloud y el proyecto:

    code language-bash
    magento-cloud login
    
  2. Compruebe el entorno con RabbitMQ instalado y configurado.

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. Utilice SSH para conectarse al entorno de la nube:

    code language-bash
    magento-cloud ssh
    
  4. Recupere los detalles de conexión de RabbitMQ y las credenciales de inicio de sesión de la variable $MAGENTO_CLOUD_RELATIONSHIPS:

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    o

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    En la respuesta, busque la información de RabbitMQ, por ejemplo:

    code language-json
    {
       "rabbitmq" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "amqp",
             "port" : 5672,
             "host" : "rabbitmq.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. Habilite el reenvío de puertos locales a RabbitMQ (si su proyecto se encuentra en una región diferente, como la región US-3, EU-5 o AP-3, sustituya us-3/eu-5/ap-3 por us)

    code language-bash
    ssh -L <port-number>:rabbitmq.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    

    Un ejemplo de acceso a la interfaz web de administración de RabbitMQ en http://localhost:15672 es:

    code language-bash
    ssh -L 15672:rabbitmq.internal:15672 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
  6. Mientras la sesión está abierta, puede iniciar un cliente de RabbitMQ de su elección desde la estación de trabajo local, configurado para conectarse a localhost:<portnumber> mediante el número de puerto, el nombre de usuario y la información de contraseña de la variable MAGENTO_CLOUD_RELATIONSHIPS.

Conectar desde la aplicación

Para conectarse a RabbitMQ que se ejecuta en una aplicación, instale un cliente, como amqp-utils, como dependencia de proyecto en el archivo .magento.app.yaml.

Por ejemplo,

dependencies:
    ruby:
        amqp-utils: "0.5.1"

Cuando inicia sesión en su contenedor de PHP, ingresa cualquier comando amqp- disponible para administrar las colas.

Conéctese desde su aplicación PHP

Para conectarse a RabbitMQ usando su aplicación PHP, agregue una biblioteca PHP a su árbol de fuentes.

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