Cursos Magento

Magento 2 e RabbitMQ

,

Atualizado em 11 de setembro de 2020

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âmetroDescrição
--amqp-hostO host onde o Rabbitmq está instalado. Geralmente “localhost”.
--amqp-portA porta de conexão. O padrão é 5672.
--amqp-userO usuário que usaremos pra se conectar. Não use o usuário padrão guest.
--amqp-passwordA senha. Não use a senha padrão (que também é guest).
--amqp-virtualhostO virtual host usado dentro do RabbitMQ. O padrão é /.
--amqp-sslIndica 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:

Plugin de gerenciamento do RabbitMQ
Gerenciador do RabbitMQ após receber algumas chamadas à API Rest para operações em massa

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.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/magento-2-rabbitmq/"]