Criando Jobs
v4Um job é uma classe com um método handle() que executa a tarefa em segundo plano. Estenda MUCRM\engine\queue\job e coloque em app/shared/jobs/.
Estrutura básica
<?php
namespace MUCRM\shared\jobs;
use MUCRM\engine\queue\job;
use MUCRM\engine\mail\mailer;
use MUCRM\shared\mailers\recovery_mail;
class send_email_recovery extends job
{
public string $queue = 'email';
public int $tries = 3;
public array $backoff = [10, 30, 120];
public int $timeout = 60;
public function handle(): void
{
mailer::send(
$this->data['email'],
new recovery_mail(
$this->data['name'],
$this->data['email'],
$this->data['new_password']
)
);
}
public function failed(\Throwable $e): void
{
// Chamado após esgotar todas as tentativas
}
}Propriedades configuráveis
| Propriedade | Padrão | Descrição |
|---|---|---|
| $tries | 3 | Tentativas antes de falhar |
| $backoff | [10,30,120] | Segundos entre tentativas |
| $timeout | 60 | Tempo máximo de execução |
| $queue | default | Nome da fila |
| $unique | false | Impede jobs duplicados |
Acessar dados do job
Os dados passados no dispatch() ficam em $this->data:
$email = $this->data['email'];
$name = $this->data['name'];Agendamento automático
Implemente schedule() para rodar o job periodicamente via cron:
public function schedule(): ?string
{
return '0 3 * * *'; // todo dia às 3h
}Veja Scheduler.