Lewati ke konten

Pengelolaan Antrean

Queuety mendukung beberapa antrean bernama. Setiap worker memproses satu antrean atau daftar antrean berurutan (lihat Worker), dan antrean dapat dijeda serta dilanjutkan secara terpisah.

Antrean bernama

Kirim pekerjaan ke antrean tertentu:

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

Jalankan worker untuk setiap antrean:

Shell
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync

Antrean default adalah default. Jika Anda tidak menentukan antrean, pekerjaan akan masuk ke sana.

Menjeda dan melanjutkan

Jeda antrean untuk menghentikan worker mengambil pekerjaan baru. Pekerjaan yang sedang diproses akan diselesaikan, tetapi tidak ada pekerjaan baru yang akan diambil.

PHP
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );

Periksa apakah antrean dijeda:

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

Melalui CLI:

Shell
wp queuety pause emails
wp queuety resume emails

Ini berguna selama proses deployment atau masa pemeliharaan saat Anda ingin menghentikan pemrosesan sementara tanpa mematikan worker.

Statistik antrean

Dapatkan jumlah pekerjaan yang dikelompokkan berdasarkan status:

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

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

Melalui CLI:

Shell
wp queuety status
wp queuety status --queue=emails

Pekerjaan yang dikarantina

Daftar semua pekerjaan yang dikarantina (gagal setelah seluruh percobaan ulang habis):

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

Coba lagi:

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

Menghapus pekerjaan yang selesai

Hapus pekerjaan lama yang sudah selesai agar database tetap bersih:

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

Melalui CLI:

Shell
wp queuety purge
wp queuety purge --older-than=30