Site

Criando Jobs

v4

Um 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

PropriedadePadrãoDescrição
$tries3Tentativas antes de falhar
$backoff[10,30,120]Segundos entre tentativas
$timeout60Tempo máximo de execução
$queuedefaultNome da fila
$uniquefalseImpede 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.