Setup Cronjob Menggunakan Nodejs

Cronjob merupakan salah satu fitur pemrograman untuk menjadwalkan fungsi-fungsi class yang ada di kode backend kita. Dimana Cronjob sendiri adalah fitur untuk menjalankan satu fungsi atau beberapa fungsi untuk diproses dibelakang layar, atau dibelakang proses-proses umum yang di akses oleh user.

Install Nodecron untuk menggunakan Cronjob

yarn add node-cron

Lalu jika anda menggunakan expressjs anda bisa menggunakan di server.js root api anda.

...
const express = require('express');
const port = process.env.PORT || 3000;
const app = express();

// Gunakan Nodecron dibawah ini
...
// Sebelum app listen dibawah ini
app.listen(port, () => {
    console.log(`App running on ${port}`)
})

Jika melihat aplikasi diatas adalah aplikasi normal yang kita buat dari awal menggunakan expressjs nah sekarang akan kita tambahkan kode berikut

const dayjs = require('dayjs');
...

const scheduleRunCron = async () => {
  const now = new Date();
  const nowDate = dayjs(now).format('YYYY-MM-DD');
  const nowTime = dayjs(now).format('HH:mm:ss');
  console.log(`Date ${nowDate} and Time ${nowTime}`);
};

// Cronjob akan berjalan tiap 2 detik.
const cronjob = cron.schedule('*/2 * * * * *', async () => {
  scheduleRunCron();
});

cronjob.start();

kode diatas artinya kita akan menjalankan fungsi scheduleRunCron setiap 2 detik sekali. anda bisa mengatur ingin dilakukan berapa menit, detik, jam, hari sesuai dengan schedule yang anda inginkan anda bisa melihat parameternya di Package node-cron dilink ini Node Cron

Nah dibawah ini versi lengkap expressjs menggunakan package Node Cron yang akan saya jalankan setiap 2 detik sekali.

...
const express = require('express');
const port = process.env.PORT || 3000;
const app = express();
const dayjs = require('dayjs');

// Gunakan Nodecron dibawah ini

// Fungsi Schedule
const scheduleRunCron = async () => {
    const now = new Date();
    const nowDate = dayjs(now).format('YYYY-MM-DD');
    const nowTime = dayjs(now).format('HH:mm:ss');
    console.log(`Date ${nowDate} and Time ${nowTime}`);
};

// Cronjob akan berjalan tiap 2 detik.
const cronjob = cron.schedule('*/2 * * * * *', async () => {
    scheduleRunCron();
});

cronjob.start()
// Sebelum app listen dibawah ini
app.listen(port, () => {
    console.log(`App running on ${port}`)
})