Gerenciar filas de mensagens
Você pode gerenciar filas de mensagens a partir da linha de comando usando tarefas cron ou um gerenciador de processo externo para garantir que os consumidores estejam recuperando mensagens. Isso se aplica a todos os agentes de mensagem compatíveis, incluindo RabbitMQ (AMQP), Apache AtiveMQ Artemis (STOMP) e o adaptador MySQL.
Gerenciamento de processos
Os trabalhos do Cron são o mecanismo padrão para reiniciar os consumidores. Processos iniciados por cron
consomem o número especificado de mensagens e terminam. Executar novamente cron
reinicia o consumidor.
O exemplo a seguir mostra a configuração crontab
para consumidores em execução:
/app/code/Magento/MessageQueue/etc/crontab.xml
...
<job name="consumers_runner" instance="Magento\MessageQueue\Model\Cron\ConsumersRunner" method="run">
<schedule>* * * * *</schedule>
</job>
...
cron
agendamentos de acordo com suas necessidades comerciais.cron
com o Commerce.Você também pode usar um gerenciador de processos, como o Supervisor, para monitorar o status dos processos. O gerenciador pode usar a linha de comando para reiniciar os processos conforme necessário.
Configuração
Comportamento por padrão
- Trabalho Cron
consumers_runner
habilitado - O trabalho Cron
consumers_runner
executa todos os consumidores definidos - Cada consumidor processa 10.000 mensagens e depois finaliza
CRON_CONSUMERS_RUNNER
para configurar o trabalho cron do consumers_runner
.Configuração específica
Edite o arquivo /app/etc/env.php
para configurar o trabalho cron consumers_runner
.
...
'cron_consumers_runner' => [
'cron_run' => false,
'max_messages' => 20000,
'consumers' => [
'consumer1',
'consumer2',
],
'multiple_processes' => [
'consumer1' => 4
]
],
...
-
cron_run
- Um valor booleano que habilita ou desabilita o trabalho cronconsumers_runner
(padrão =true
). -
max_messages
- O número máximo de mensagens que cada consumidor deve processar antes de terminar (padrão =10000
). Embora não o recomendemos, você pode usar 0 para impedir que o consumidor seja encerrado. Consulteconsumers_wait_for_messages
para configurar como os consumidores processam mensagens da fila de mensagens. -
consumers
- Uma matriz de cadeias de caracteres especificando quais consumidores executar. Uma matriz vazia executa todos consumidores. -
multiple_processes
- Uma matriz de pares de valores chave especificando qual consumidor executar em quantos processos. Compatível com o Commerce 2.4.4 ou superior.note info INFO Não é recomendável executar vários consumidores em uma fila operada pelo MySQL. Consulte Alterar fila de mensagens de MySQL para agentes externos para obter mais informações sobre como alternar para AMQP (RabbitMQ) ou STOMP (AtiveMQ Artemis). note info INFO Se o armazenamento do Adobe Commerce estiver hospedado na plataforma de nuvem, use o CONSUMERS_WAIT_FOR_MAX_MESSAGES
para configurar como os consumidores processam mensagens da fila de mensagens.note note NOTE O AtiveMQ Artemis (STOMP) foi introduzido no Adobe Commerce 2.4.6 e versões posteriores.
Consulte Iniciar consumidores da fila de mensagens.