
# 队列管理

Queuety 支持多个命名队列。每个工作进程处理一个队列或按顺序排列的队列列表（参见 [工作进程](https://queuety.inline0.dev/zh/docs/features/workers#multi-queue-priorities)），并且可以单独暂停和恢复各个队列。

## 命名队列

将作业分发到指定队列：

```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' );
```

为每个队列运行工作进程：

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

默认队列是 `default`。如果未指定队列，作业就会进入该队列。

## 暂停和恢复

暂停队列可阻止工作进程领取新作业。正在处理的作业会继续完成，但不会领取新作业。

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

检查队列是否已暂停：

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

通过 CLI：

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

在部署或维护时段，这很有用；你可以暂时停止处理作业，而无需终止工作进程。

## 队列统计数据

按状态获取作业数量：

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

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

通过 CLI：

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

## 失败作业

列出所有失败作业（重试次数用尽后失败）：

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

重试这些作业：

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

## 清除已完成作业

删除较早完成的作业，以保持数据库整洁：

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

通过 CLI：

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