Workers
Os Workers são responsáveis por processar os Jobs que estão na fila do sistema. Quando um Job é enviado utilizando dispatch(), ele é armazenado na tabela mucrm_jobs. O Worker fica encarregado de buscar esses registros e executar automaticamente o método handle().
Como Funciona
- O sistema adiciona o Job na fila
- O Worker procura Jobs disponíveis
- O Worker reserva o Job
- O método
handle()é executado - O Job é removido da fila após sucesso
- Em caso de falha, o sistema aplica retry automático
Executando o Worker
php mucrm jobs:runO que o Worker faz
- Processamento em lote
- Retry automático
- Backoff progressivo
- Controle de tentativas
- Recuperação de Jobs abandonados
- Failed Jobs automáticos
- Proteção contra concorrência
- Logs automáticos
Exemplo de Processamento
Job
<?php
namespace MUCRM\shared\jobs;
use MUCRM\engine\queue\job;
class send_welcome_email extends job
{
public function handle(): void
{
echo 'Email enviado';
}
}Dispatch
send_welcome_email::dispatch();Worker processando
php mucrm jobs:runLogs Automáticos
Quando 'debug' => true, o Worker gera logs automáticos:
[INFO] Queue Worker iniciado
[INFO] Processando job MUCRM\shared\jobs\send_welcome_email
[INFO] Job MUCRM\shared\jobs\send_welcome_email processado com sucesso em 0.3s
[INFO] Worker finalizado. Jobs processados: 1Jobs Abandonados
Se um Worker morrer durante o processamento, o sistema consegue recuperar automaticamente o Job. O Job volta para a fila após o tempo definido internamente pelo Worker. Isso evita perda de tarefas.
Retry Automático
Caso aconteça alguma exceção durante o processamento, o sistema automaticamente:
- Registra o erro
- Aplica retry
- Aguarda o backoff
- Tenta novamente
Failed Jobs
Quando o número máximo de tentativas é atingido, o Job é movido automaticamente para mucrm_failed_jobs.
Rodando Continuamente
Em produção, o ideal é manter o Worker rodando continuamente utilizando:
- Supervisor
- Cron
- Agendadores da hospedagem
- Serviços Linux
Exemplo usando Cron
* * * * * php /home/server/mucrm jobs:runDiferença entre Scheduler e Worker
| Sistema | Responsabilidade |
|---|---|
| Scheduler | Agenda tarefas automáticas |
| Worker | Processa Jobs da fila |
Fluxo Completo
Scheduler
↓
Adiciona Job na fila
↓
Worker processa
↓
handle()
↓
Job removidoPerformance
Os Workers foram projetados para:
- Baixo consumo de memória
- Alta velocidade
- Execução paralela
- Processamento seguro
- Compatibilidade com grandes volumes
Recomendação
Separar filas por categoria melhora bastante a performance:
public string $queue = 'email';
public string $queue = 'rankings';
public string $queue = 'payments';Isso facilita: monitoramento, escalabilidade, organização, balanceamento de carga.