
# Gestion des files d’attente

Queuety prend en charge plusieurs files d’attente nommées. Chaque worker traite une file ou une liste ordonnée de files (voir [Workers](https://queuety.inline0.dev/fr/docs/features/workers#multi-queue-priorities)), et les files peuvent être mises en pause ou reprises indépendamment.

## Files d’attente nommées

Distribuez les tâches vers des files d’attente spécifiques :

```php
use Queuety\Queuety;

Queuety::dispatch( 'send_email', $payload )->on_queue( 'emails' );
Queuety::dispatch( 'process_image', $payload )->on_queue( 'media' );
Queuety::dispatch( 'sync_data', $payload )->on_queue( 'sync' );
```

Exécutez des workers pour chaque file d’attente :

```bash
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync
```

La file d’attente par défaut est `default`. Si vous ne précisez pas de file, les tâches y sont envoyées.

## Mise en pause et reprise

Mettez une file en pause pour empêcher les workers de prendre de nouvelles tâches. Les tâches déjà en cours seront terminées, mais aucune nouvelle tâche ne sera prise en charge.

```php
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );
```

Vérifiez si une file d’attente est en pause :

```php
if ( Queuety::is_paused( 'emails' ) ) {
    // Queue is paused
}
```

Via CLI :

```bash
wp queuety pause emails
wp queuety resume emails
```

C’est utile lors des déploiements ou des périodes de maintenance, lorsque vous souhaitez suspendre temporairement le traitement sans arrêter le worker.

## Statistiques des files d’attente

Obtenez le nombre de tâches regroupées par état :

```php
$stats = Queuety::stats(); // all queues
$stats = Queuety::stats( 'emails' ); // specific queue

// Returns: ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]
```

Via CLI :

```bash
wp queuety status
wp queuety status --queue=emails
```

## Tâches en attente définitive

Listez toutes les tâches en attente définitive (ayant échoué après épuisement des tentatives) :

```php
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queue
```

Relancez-les :

```php
Queuety::retry( $job_id );       // retry a specific job
Queuety::retry_buried();         // retry all buried jobs
```

## Purger les tâches terminées

Supprimez les anciennes tâches terminées pour nettoyer la base de données :

```php
$count = Queuety::purge();     // uses QUEUETY_RETENTION_DAYS (default: 7)
$count = Queuety::purge( 30 ); // purge jobs older than 30 days
```

Via CLI :

```bash
wp queuety purge
wp queuety purge --older-than=30
```
