Queue
Candidats à la queue
- Imports et exports
- Notifications
- Appels API externes
- Rapports
- Parsing lourd
- Génération d'embeddings IA (CPU-intensive)
Règles
- Les jobs doivent être idempotents quand possible
- Définir le comportement de retry et timeout
- Logger les échecs avec des IDs stables
- Ne pas sérialiser de gros payloads
Lancer le worker (développement)
php artisan queue:work --tries=3 --timeout=60
Pattern job
class ProcessAnalysesImport implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public int $tries = 3;
public int $timeout = 300;
public function __construct(
private readonly int $importId,
) {}
public function handle(AnalysesImportService $service): void
{
$service->processImport($this->importId);
}
public function failed(Throwable $e): void
{
Log::error('Import job failed', [
'import_id' => $this->importId,
'error' => $e->getMessage(),
]);
}
}