Data & layanan

Queue & scheduler

Tunda pekerjaan ke antrean in-memory dan jalankan tugas berkala melalui Artisan.

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.

Ketik untuk mencari di seluruh dokumentasi.