Узнайте, как создавать масштабируемые задания cron в Nodejs

Что такое задание Cron?
Задание cron — это, по сути, команда Linux, используемая для планирования выполнения задач в будущем. Обычно это используется для планирования задания, которое выполняется периодически — например, для рассылки уведомлений каждое утро или отправки клиентам уникального купона на скидку на основе бизнес-логики.

Почему Node js?
Это очень просто. Node js легкий, быстрый и работает как очаровательная архитектура микросервисов.
Давайте посмотрим, насколько просто его настроить.

Зависимости –

npm i --save node-schedule dotenv

Тестовая функция –

const myCronJob = async () => {
try {
console.info("myCronJob Start")
/* perform your async operation *
await asyncOperation(2000)
console.info("myCronJob End")
}
catch (err) {console.error(`Func.cronJobFunc: ${err}`);}
}

Давайте создадим фиктивную функцию, которая будет выполнять асинхронную операцию:

const asyncOperation = (ms)=> new Promise(resolve => setTimeout(resolve, ms));

Выражение Cron –

1. Выражение cron — это строка, состоящая из шести или семи подвыражений (полей), описывающих отдельные детали расписания.

‹минута› ‹час› ‹день месяца› ‹месяц› ‹день недели› ‹команда›

2. Давайте запланируем наше пакетное задание на определенное время каждый день.

import { scheduleJob } from “node-schedule”;
scheduleJob(‘0 8 * * *’, () => myCronJob);

3. Здесь выражение cron равно 0 8 * * *, что означает каждый день в 8 утра.

4. Вы также можете настроить выражение cron, добавив переменную конфигурации в файл .env , в данном случае MY_CRON_EXP=0 8 * * * .

import { scheduleJob } from “node-schedule”;
require(“dotenv”).config();
scheduleJob(process.env.MY_CRON_EXP, () => myCronJob);

Примечание. Обязательно укажите путь, по которому вы вызываете scheduleJob ,
таким образом сервер всегда прослушивает ваше пакетное задание и выполняет его всякий раз, когда выражение cron истинно.

Запустить скрипт —

node server.js

Вывод —

myCronJob Start
myCronJob End

Вот и все ! Это было настолько просто, что это решение можно было использовать для создания надежных пакетных заданий, вызывая базы данных, внедряя бизнес-логику или отправляя динамические электронные письма клиентам. Любую задачу можно автоматизировать!

Спасибо за чтение. Не стесняйтесь задавать любые вопросы☺