Introducción
En noviembre de 2018, la actualización de Magento 2.3.0 introdujo discretamente la integración con la herramienta de administración de colas de mensajes RabbitMQ. La nueva característica abrió potentes opciones de optimización para las ediciones Magento 2 Commerce y Open Source.
Recientemente, hemos hablado sobre la instalación y configuración de RabbitMQ. Ahora, le mostraremos cómo configurar Rabbitmq y usarlo en la instancia de Magento 2 instalada.
Beneficios
El principal beneficio de usar RabbitMQ es la capacidad de disminuir la carga en el servidor durante las horas pico mediante el almacenamiento de datos en el intermediario de mensajes. Antes de la versión 2.3.0, solo se usaban MySQL y cron para esos fines. Pero ahora podemos usar Rabbitmq, que puede acelerar su tienda actual al disminuir la carga en la base de datos MySQL.
Instalación de Rabbitmq
La instalación de Rabbitmq se describe en nuestro artículo Instalación y configuración de RabbitMQ. Que se puede usar para instalar RabbitMQ en su servidor Ubuntu o CentOS.
Configuración de Rabbitmq
1. En primer lugar, debe eliminar al usuario invitado:
# rabbitmqctl delete_user guest
2. Después de eso, necesitaremos crear un usuario con los permisos necesarios.
# rabbitmqctl add_user rabbitmq rabbitmq_pwd # rabbitmqctl set_user_tags rabbitmq administrator # rabbitmqctl set_permissions -p / rabbitmq ".*" ".*" ".*"
3. Además, necesitamos crear una cola:
# rabbitmqadmin --username=rabbitmq --password=rabbitmq_pwd declare queue --vhost=/ name=async.operations.all durable=true
Eso es todo, rabbitmq está listo para usar. A partir de ahora, podemos empezar a configurar Magento para usarlo.
Configuración de Magento
En primer lugar, debemos agregar la configuración de rabbitmq. Se puede hacer de 2 formas:
A través de bin/magento
$ php bin/magento setup:config:set --amqp-host="127.0.0.1" --amqp-port="5672" --amqp-user="rabbitmq" --amqp-password="rabbitmq_pwd" --amqp-virtualhost="/"
Editando app/etc/env.php con las siguientes líneas
'queue' => array ( 'amqp' => array ( 'host' => '127.0.0.1', 'port' => '5672', 'user' => 'rabbitmq', 'password' => 'rabbitmq_pwd', 'virtualhost' => '/' ), ),
Además, deberá agregar cron runner a app/etc/env.php:
'cron_consumers_runner' => [ 'cron_run' => true, 'max_messages' => 0, 'consumers' => [ 'async.operations.all', 'codegeneratorProcessor' ] ]
Eso es todo. Configuramos con éxito el consumidor de rabbitmq en Magento.
Prueba del consumidor de rabbitmq en Magento
Para enumerar todos los consumidores, puede ejecutar el comando:
# php bin/magento queue:consumers:list
Para ejecutar el consumidor, debe ejecutar el siguiente comando:
# php bin/magento queue:consumers:start async.operations.all
Eso es todo. ¡El consumidor debería trabajar ahora!
Conclusión
RabbitMQ es un poderoso intermediario de mensajes que puede ayudar a mejorar la velocidad de su tienda. Además, será útil disminuir la carga en su servidor MySQL, lo que puede ser útil durante los picos de carga.