Tạo lịch Cron Job sử dụng NodeJS trong 5 phút


1053

Cài đặt dependency

Trong bài viết này, chúng ta sẽ tạo cron job để gửi email. Tạo một dự án NodeJS đơn giản bằng cách chạy lệnh sau trong terminal hoặc bash.

mkdir node-cron-job-scheduler
cd node-cron-job-scheduler
npm init -y
touch index.js

Cài đặt những dependency sau

npm install — save express node-cron nodemailer

Trong file index.js file, import dependency vào bên trên.

<!-- wp:paragraph -->
<p>const cron = require(“node-cron”);</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>const express = require(“express”);</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>const nodeMailer = require(‘nodemailer’);</p>
<!-- /wp:paragraph -->

Bây giờ chúng ta sẽ tạo một server NodeJS đơn giản bằng cách thêm:

app = express();
…
app.listen(8000);

Tạo Tài khoản Email Test

Trước khi chúng ta tạo cron job, hãy tạo tài khoản email test tại https://ethereal.email/. Chúng ta sẽ sử dụng các thông tin test này để gửi email. Tạo tài khoản người dùng thử nghiệm bằng cách sử dụng mô-đun nodemailer như sau:

let testAccount = nodemailer.createTestAccount();

testAccount.user và testAccount.pass có thể được sử dụng để cung cấp thông tin xác thực cho đối tượng Mail Transporter.

Scheduling Cron Job

Hãy tạo cron job bằng mô-đun node-cron.

cron.schedule(“* * * * *”, function () {
console.log(“Running Cron Job”);
});

Here, the cron job runs for every minute. Start the Node.js server and you will see the message “Running Cron Job” in the console at every minute. We can schedule jobs at different days or time.

Ở đây, cron job chạy mỗi phút. Khởi động server NodeJS và bạn sẽ thấy thông báo “Running Cron Job” trong bảng điều khiển mỗi phút. Chúng ta  có thể schedule job vào những ngày hoặc thời gian khác nhau.

Image for post
NodeJS

Ví dụ: “* * 5 * *“ => Điều này đại diện cho ngày 5 hàng tháng. “30 7 * * *” biểu thị mỗi ngày ở giờ thứ 7 và phút thứ 30.

Hãy thêm logic để gửi email bằng mô-đun nodemailer  trong cron job.

let transporter = nodeMailer.createTransport({
host: ‘smtp.ethereal.email’,
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: ‘<TEST_USER>’, // generated ethereal user
pass: ‘<TEST_PASSWORD>’ // generated ethereal password
}
});
const mailOptions = {
from: ‘“John Doe” <john.doe@example.com>’, // sender address
to: ‘jane.doe@example.com’, // list of receivers
subject: ‘Hello there!’, // Subject line
text: ‘A Message from Node Cron App’, // plain text body
html: ‘<b>A Message from Node Cron App</b>’ // html body
};
transporter.sendMail(mailOptions, function (error, info) {
console.log(info.messageId);
if (err) {
console.log(err);
}
});

Ở đây, chúng ta đã tạo object vận chuyển bằng cách sử dụng mô-đun nodemailer và sử dụng Ethereal làm server SMTP NodeJS. Cung cấp thông tin tài khoản thử nghiệm mà đã tạo trước đó.

Trong đối tượng mailOptions, chúng ta đã cung cấp tất cả các thông tin cần thiết để tạo một email.

Testing Cron Job

Chạy server bằng cách sử dụng lệnh sau node index.js. Chúng ta sẽ thấy thông báo Id trong bảng điều khiển mỗi phút như sau:

Running Cron Job
<bd7dd14e-3e9b-e495–12d5-c5e67a11af5c@example.com>

Trong trang Ethereal, chúng ta có thể thấy các email được gửi từ server bằng cách sử dụng nút shown trong ảnh chụp màn hình bên dưới.

Image for post
NodeJS

Ethereal website

Image for post
Image for post

Test Mails trên Ethereal site

Chúng ta có thể sử dụng bất kỳ máy chủ SMTP thực nào mà chúng ta chọn để gửi email.

Kết luận

Qua bài viết, bạn đã hiểu rõ cách viết lập lịch trình cron job cho web của bạn. Hãy tận dụng để nâng cấp web, tạo một tính năng tận dụng được khả năng của nó

Tham khảo thêm về NodeJS tại đây: Top 3 view engine phổ biến trong NodeJS


Like it? Share with your friends!

1053