Migración a ActiveMQ
ActiveMQ (Apache ActiveMQ Artemis) es un agente de mensajes multiprotocolo de alto rendimiento que proporciona una alternativa a RabbitMQ para gestionar colas de mensajes en Adobe Commerce.
A partir de las versiones 2.4.8-p3, 2.4.7-p8, 2.4.6-p13 y 2.4.5-p16, Adobe Commerce admite ActiveMQ como agente de cola de mensajes. Esto proporciona flexibilidad adicional para que las instalaciones locales puedan elegir entre RabbitMQ y ActiveMQ en función de sus requisitos de infraestructura y experiencia.
Antes de empezar
Antes de iniciar la migración, asegúrese de lo siguiente:
- Revise la configuración actual de RabbitMQ en
app/etc/env.php. - Realice una copia de seguridad completa de la base de datos y del código base.
- Asegúrese de que la instalación cumple los requisitos del sistema para ActiveMQ.
- Planifique una ventana de mantenimiento para completar la migración.
Ruta de migración
La migración a ActiveMQ es un proceso directo, pero es esencial asegurarse de que todos los mensajes pendientes se procesen antes de cambiar de agente.
Estas instrucciones de migración suponen que Adobe Commerce es la única aplicación que utiliza el agente de cola de mensajes.
Paso 1: Coloque el sitio en modo de mantenimiento
-
Coloque el sitio en Modo de mantenimiento:
code language-bash bin/magento maintenance:enable -
Verificar que el modo de mantenimiento esté activado:
code language-bash bin/magento maintenance:status
Paso 2: Comprobar los recuentos de mensajes de RabbitMQ
Antes de continuar, compruebe que todos los mensajes de RabbitMQ se hayan procesado. Utilice uno de los siguientes métodos:
Método A: Uso de RabbitMQ Management Dashboard
-
Acceder a la interfaz de usuario de administración de RabbitMQ en
http://<host>:15672 -
Credenciales predeterminadas:
guest/guest -
Vaya a la ficha Colas
-
Comprobar que todas las colas muestran 0 mensajes
Método B: Uso de la línea de comandos rabbitmqctl
-
Compruebe todas las colas y sus recuentos de mensajes:
code language-bash rabbitmqctl list_queues name messages consumers {width="500"}
-
Comprobar información detallada de la cola:
code language-bash rabbitmqctl list_queues name messages messages_ready messages_unacknowledged consumers {width="500"}
Paso 3: Procesar mensajes pendientes
Si los mensajes están pendientes en cualquier cola, procesarlos antes de continuar.
-
Obtenga la lista de consumidores disponibles:
code language-bash bin/magento queue:consumers:list -
Procesar consumidores como grupo o por cola de mensajes individual:
-
Procesar consumidores como grupo
code language-bash bin/magento cron:run --group=consumersnote note NOTE Si cron ya se está ejecutando en el sistema, no necesita ejecutar bin/magento cron:run --group=consumersmanualmente. En su lugar, compruebe que los mensajes se están procesando comprobando el recuento de mensajes mediante los comandos del paso 2. -
Procesar una cola de mensajes específica
code language-bash bin/magento queue:consumers:start <consumer_name> --max-messages=<number>Por ejemplo, para procesar operaciones asincrónicas:
code language-bash bin/magento queue:consumers:start async.operations.all --max-messages=1000note note NOTE El parámetro --max-messageslimita el número de mensajes que se deben procesar antes de que se detenga el consumidor. Ajuste este valor en función del tamaño de la cola. -
Supervisar el procesamiento de mensajes
Compruebe continuamente los recuentos de mensajes hasta que todas las colas estén vacías:
code language-bash # Check every few seconds until 0 messages remain watch -n 5 "rabbitmqctl list_queues name messages | grep -v '^Listing' | grep -v '0$'"
-
Paso 4: Verificar que se procesan todos los mensajes
Antes de continuar con el siguiente paso, asegúrese de que todas las colas muestran 0 mensajes. Ejecute de nuevo los comandos de verificación del paso 2.
Paso 5: Detener a los consumidores y los trabajos crónicos
-
Detener todos los consumidores de colas de mensajes en ejecución:
code language-bash # If using supervisor supervisorctl stop all # Or manually kill consumer processes pkill -f "queue:consumers:start" -
Deshabilitar trabajos cron:
code language-bash bin/magento cron:remove -
Verifique que se eliminen los trabajos cron:
code language-bash crontab -l
Paso 6: Copia de seguridad de la configuración actual
Cree una copia de seguridad de la configuración actual:
cp app/etc/env.php app/etc/env.php.backup.rabbitmq
Paso 7: Desinstalar RabbitMQ de forma opcional
Puede desinstalar RabbitMQ si ya no es necesario.
Paso 8: Instalar y configurar ActiveMQ en Adobe Commerce
Para completar las tareas de instalación y configuración de ActiveMQ, como configurar el protocolo STOMP y comprobar la conexión, consulte la Guía de instalación y configuración.
Paso 9: Reinstalar los trabajos de cron
-
Una vez finalizada correctamente la prueba, vuelva a instalar los trabajos cron:
code language-bash bin/magento cron:install -
Compruebe que los trabajos cron estén programados:
code language-bash crontab -l
Paso 10: Desactivar el modo de mantenimiento
-
Después de comprobar que todo funciona correctamente, desactive el modo de mantenimiento:
code language-bash bin/magento maintenance:disable -
Compruebe que el modo de mantenimiento está desactivado:
code language-bash bin/magento maintenance:status
Paso 11: Monitorización del sistema
Supervise el sistema durante 24 a 48 horas después de la migración para asegurarse de que todas las operaciones en cola funcionan correctamente:
- Consulte la consola web de ActiveMQ regularmente para ver el rendimiento de los mensajes
- Supervisar los registros de aplicaciones en busca de errores relacionados con las colas
- Compruebe que las operaciones asincrónicas (configuración, guardados, exportaciones, etc.) funcionan
- Compruebe los registros de cron para asegurarse de que los consumidores están ejecutando
# Monitor system logs for queue activity
tail -f var/log/system.log | grep -i queue
# Monitor cron logs
tail -f var/log/cron.log
# Check running consumer processes
ps aux | grep "queue:consumers:start"
Reversión
Si se producen problemas durante o después de la migración, puede volver a RabbitMQ:
-
Activar modo de mantenimiento:
code language-bash bin/magento maintenance:enable -
Detenga a todos los consumidores y deshabilite cron:
code language-bash pkill -f "queue:consumers:start" bin/magento cron:remove -
Restaure la configuración anterior:
code language-bash cp app/etc/env.php.backup.rabbitmq app/etc/env.php -
Iniciar RabbitMQ (si está detenido):
code language-bash sudo systemctl start rabbitmq-server -
Borrar caché:
code language-bash bin/magento cache:flush -
Vuelva a instalar cron:
code language-bash bin/magento cron:install -
Desactivar el modo de mantenimiento:
code language-bash bin/magento maintenance:disable
No es necesario realizar más cambios en el valor de configuración una vez completada la migración.