Queue manager menampung job yang dapat diproses di luar alur request. Scheduler menjalankan callback yang jatuh tempo berdasarkan interval.
Mendaftarkan job
app.make('queue').register('send-email', async (payload) => {
await mailer.send(payload.to, payload.subject);
});
Dispatch job dengan nama dan payload:
app.make('queue').dispatch('send-email', {
to: 'user@example.com',
subject: 'Selamat datang',
});
Menjalankan queue
node artisan queue:run
Implementasi saat ini memakai antrean in-memory. Job tidak bertahan ketika proses dihentikan, sehingga gunakan ini sebagai fondasi pengembangan sebelum persistent driver tersedia.
Scheduled task
Daftarkan task di routes/console.js.
export default function commands({ schedule, app }) {
schedule.call(async () => {
await app.make('log').info('Cleanup started');
}).hourly();
schedule.call(() => refreshMetrics()).everyFiveMinutes();
}
Interval yang tersedia:
everyMinute()everyFiveMinutes()hourly()
Menjalankan scheduler
node artisan schedule:run
Panggil perintah tersebut setiap menit melalui cron atau scheduler platform produksi. Hanya task yang jatuh tempo yang akan dijalankan.