[Solo PaaS]{class="badge informative" title="Se aplica solo a proyectos de Adobe Commerce en la nube (infraestructura PaaS administrada por Adobe) y a proyectos locales."}

Configurar el servicio ActiveMQ

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 puede usar ActiveMQ Artemis 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. ActiveMQ Artemis admite el protocolo STOMP (Protocolo de mensajería orientada a texto de transmisión) para mensajes.

ActiveMQ Artemis está disponible como alternativa a RabbitMQ para administrar colas de mensajes. Resulta especialmente útil cuando necesita características específicas de ActiveMQ o desea utilizar el protocolo STOMP.

IMPORTANT
Si prefiere usar un servicio de Agente de mensajes existente, como ActiveMQ, en lugar de depender de Adobe Commerce en la infraestructura de 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 ActiveMQ Artemis:

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

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

    code language-yaml
    relationships:
        activemq-artemis: "activemq-artemis:activemq-artemis"
    
  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 ActiveMQ Artemis 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.

Conectar con ActiveMQ para depuración

Para fines de depuración, puede 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 ActiveMQ Artemis 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 ActiveMQ 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 ActiveMQ. El nombre de la relación depende de cómo la haya configurado en el archivo .magento.app.yaml. Por ejemplo, si utilizó activemq-artemis como nombre de relación:

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

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

    Un ejemplo de acceso a la consola web de ActiveMQ Artemis en http://localhost:8161 es:

    code language-bash
    ssh -L 8161:activemq-artemis.internal:8161 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
    note note
    NOTE
    ActiveMQ Artemis utiliza el puerto 61616 para la mensajería STOMP y el puerto 8161 para la consola web.
  6. Mientras la sesión está abierta, puede acceder a la consola web de ActiveMQ Artemis en http://localhost:8161 con el nombre de usuario y la contraseña de la variable MAGENTO_CLOUD_RELATIONSHIPS.

Conectar desde la aplicación

Para conectarse a ActiveMQ que se ejecuta en una aplicación, instale una biblioteca de cliente STOMP en su aplicación PHP.

Conéctese desde su aplicación PHP

Para conectarse a ActiveMQ usando su aplicación PHP, agregue una biblioteca PHP STOMP al árbol de fuentes. Adobe Commerce utiliza el protocolo STOMP para la comunicación de ActiveMQ y la configuración se configura automáticamente durante la implementación cuando se detecta ActiveMQ Artemis como un servicio configurado.

Compatibilidad con protocolos

Los elementos de ActiveMQ de Adobe Commerce en la infraestructura en la nube utilizan el protocolo STOMP (Protocolo de mensajería orientada a texto de streaming):

  • STOMP: protocolo de mensajería utilizado para operaciones en cola (puerto 61616)
  • Consola web: interfaz de administración accesible a través de HTTP (puerto 8161)

Diferencias con respecto a RabbitMQ

Aunque ActiveMQ Artemis y RabbitMQ sirven como intermediarios de mensajes para Adobe Commerce, existen algunas diferencias:

  • Protocolo: ActiveMQ Artemis usa el protocolo STOMP, mientras que RabbitMQ usa AMQP
  • Configuración: cuando se configura ActiveMQ Artemis, Adobe Commerce utiliza automáticamente el protocolo STOMP
  • Prioridad: si se configuran ActiveMQ y RabbitMQ, ActiveMQ tiene prioridad para las operaciones basadas en STOMP, mientras que las operaciones AMQP utilizan RabbitMQ
  • Consola web: ActiveMQ proporciona una consola de administración basada en web para supervisar colas y mensajes

Configuración de cola

Cuando ActiveMQ Artemis está configurado como servicio, Adobe Commerce configura automáticamente el sistema de cola para utilizar el protocolo STOMP. La configuración se escribe en el archivo app/etc/env.php durante la implementación:

'queue' => [
    'stomp' => [
        'host' => 'activemq-artemis.internal',
        'port' => '61616',
        'user' => 'guest',
        'password' => 'guest'
    ],
    'default_connection' => 'stomp'
]

Puede anular esta configuración utilizando la variable de entorno QUEUE_CONFIGURATION si es necesario.

recommendation-more-help
7c2b03ac-000c-497d-aba3-2c6dc720a938