O RabbitMQ é um processador de “mensagens” open source e multi plataforma.
Quando integrado com o Magento, nos permite colocar diferentes tipos de operações para serem processadas em forma de fila de forma assíncrona e inteligente.
E o melhor de tudo é que o suporte ao RabbitMQ é nativo no Magento 2 desde a versão 2.3.
Instalando o RabbitMQ
Ele pode ser instalado com os principais gerenciadores de pacotes com um dos comandos abaixo.
No Ubuntu: sudo apt install -y rabbitmq-server
No Mac: brew install rabbitmq
No Debian: usando apt específico
Instalando o Magento 2 com o RabbitMQ
Você pode instalar o Magento 2 com RabbitMQ adicionando os seguintes parâmetros abaixo em seu bin/magento setup:install:
--amqp-host="<hostname>" --amqp-port="5672" --amqp-user="<user_name>" --amqp-password="<password>" --amqp-virtualhost="/"
Sendo:
Parâmetro Descrição --amqp-host
O host onde o Rabbitmq está instalado. Geralmente “localhost”. --amqp-port
A porta de conexão. O padrão é 5672
.--amqp-user
O usuário que usaremos pra se conectar. Não use o usuário padrão guest
.--amqp-password
A senha. Não use a senha padrão (que também é guest
).--amqp-virtualhost
O virtual host usado dentro do RabbitMQ. O padrão é /
.--amqp-ssl
Indica se o Magento vai se conectar usando SSL. O padrão é false
. Se for usar SSL, terá que configurar os caminhos dos certificados.
Configurando um Magento existente
Se você já tem um Magento instalado e só quer adicionar o RabbitMQ nele, terá que editar o arquivo app/etc/env.php
, e adicionar os parâmetros abaixo manualmente.
'queue' => [ 'amqp' => [ 'host' => 'localhost', 'port' => '5672', 'virtualhost' => '/', 'user' => 'magenteiro', 'password' => 'magenteiro' ] ],
O usuário e senha padrão do RabbitMQ é guest
. No entanto é recomendado que se crie um novo usuário e desabilite o guest. No exemplo acima, usuário e senha foram definidos como magenteiro
.
Importante: após editar o arquivo acima, é necessário fazer um bin/magento setup:upgrade
para que ele crie o virtualhost no RabbitMQ e aplique as configurações.
Funcionou? Veja as estatísticas.
Se tudo deu certo, e o cron do seu Magento está configurado, as operações em massa passarão a ser processadas em filas pelo seu RabbitMQ.
Para ver se está tudo certo, você pode instalar um plugin chamado rabbitmq_management. Para fazer isso, digite:
rabbitmq-plugins enable rabbitmq_management
Em seguida, acesse o url do RabbitMQ na porta 15672 em seu browser.
Exemplo: http://localhost:15672 ou http://minhaloja.com:15672.
Conecte-se com um usuário que tenha permissão para tal. Em ambientes locais (de desenvolvimento), o usuário/senha guest/guest costuma ser suficiente.
Para ambientes de produção, pode ser necessário criar um novo usuário.
Criando usuário administrador no RabbitMQ
As permissões são dadas pelo comando rabbitmqctl. Para criarmos um usuário com nome “magenteiro” e senha “aluno”, faríamos da seguinte forma:
rabbitmqctl add_user magenteiro aluno rabbitmqctl set_user_tags magenteiro administrator
A tag “administrator” garante acesso total e irrestrito à interface de gerenciamento e APIs HTTP do RabbitMQ. Saiba mais sobre permissões na documentação oficial (em Inglês).
Veja o resultado:
Operações e consumers
As operações assíncronas no Magento 2 incluem (mas não se limitam):
- Atualização de atributos, websites, estoque em massa
- Atualização e redimensionamento de imagens
- Reindexação de estoques
- Processamento de regas de promoção de catálogo
E pode ser facilmente estendida por outros módulos que queira usar tais recursos.
Você pode obter uma lista de possíveis consumers através do comando bin/magento queue:consumers:list
.
$ bin/magento queue:consumers:list product_action_attribute.update product_action_attribute.website.update exportProcessor inventory.source.items.cleanup inventory.mass.update inventory.reservations.cleanup inventory.reservations.update media.storage.catalog.image.resize codegeneratorProcessor inventory.reservations.updateSalabilityStatus inventory.indexer.sourceItem inventory.indexer.stock media.content.synchronization media.gallery.synchronization async.operations.all
As operações são executadas e gerenciadas automaticamente pelo cron do Magento.
Instalando RabbitMQ na prática
Cansou da teoria? No Magento 2: O Curso você verá na prática como instalar e configurar o RabbitMQ, Redis, OpCache, nginx, e muitas outras configurações para otimizar seu Magento 2.
Além de aprender a desenvolver módulos e componentes para Magento 2, você passa a fazer parte de um grupo de Magenteiros comprometidos com o sucesso. Comece agora mesmo.
Gostou do artigo? Ajude a criar mais como este.
Este mini tutorial levou algumas horas para ser produzido e revisado. Se foi útil para você, lembre-se de compartilhá-lo em suas redes sociais, ou deixar seu comentário.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/magento-2-rabbitmq/"]