Last active
January 23, 2019 18:11
-
-
Save dangvanduc90/213ea47cefc3beeef322df1811f7c455 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var express = require('express') // sử dụng framework express cho nodejs | |
var app = express() | |
var bodyParser = require('body-parser') // parsing middleware | |
var cors = require('cors') // enable cors | |
import nodemailer from 'nodemailer' // package send email | |
var kue = require('kue') // package job queue | |
// config app | |
app.use(bodyParser.urlencoded({ extended: true })) | |
app.use(bodyParser.json()) | |
app.use(cors()) | |
// init server nodemailer (các bạn có thể sửng dụng gmail để gửi) | |
let transporter = nodemailer.createTransport({ | |
host: "smtp.example.com", // các bạn điền thông số vào đây | |
port: 587, // các bạn điền thông số vào đây | |
secure: false, // các bạn điền thông số vào đây | |
auth: { // các bạn điền thông số vào đây | |
user: "username", // các bạn điền thông số vào đây | |
pass: "password" // các bạn điền thông số vào đây | |
}, // các bạn điền thông số vào đây | |
tls: { // các bạn điền thông số vào đây | |
secure: true, // các bạn điền thông số vào đây | |
} // các bạn điền thông số vào đây | |
}); | |
// Actual function executed | |
const sendEmail = (job, done) => { | |
emailSender(job.data.name, job.data.to).then((success) => { | |
done(); // báo về queue là job đã done | |
}) | |
.catch((err) => { | |
console.log(err) // todo log err | |
}); | |
}; | |
// config mail | |
const emailSender = (name, to) => { | |
let mailOptions = { | |
sender: name, // tên người nhận | |
to: to, // tên người gửi | |
from: `Test Email Queue naz`, // tên người | |
subject: 'Kue Worker Email Testing', // tiêu đề mail | |
replyTo: '[email protected]', | |
}; | |
return transporter.sendMail(mailOptions) | |
}; | |
// init job queue send email with redis database | |
// thông tin về queue sẽ được lưu vào redis nếu thiết lập thông số sau | |
var queue = kue.createQueue({ | |
redis: { // các bạn có thể xóa dòng này nếu không thiết lập redis | |
host: 'localhost', // các bạn có thể xóa dòng này nếu không thiết lập redis | |
port: 6379 // các bạn có thể xóa dòng này nếu không thiết lập redis | |
} // các bạn có thể xóa dòng này nếu không thiết lập redis | |
}); | |
// config queue | |
queue.create('email', { | |
title: 'welcome email for tj', // tiêu đề mail | |
name: 'dangvanduc902', // tên người nhận | |
to: '[email protected]' // mail người nhận | |
}).attempts(5).save(); // số lần thử lại nếu job queue fail | |
// PHP sẽ nhận được kết quả ngay lập tức nhưng bạn sẽ thấy 10s sau email mới về inbox của bạn | |
app.post('/send_email', function (req, res) { | |
queue.process('email', function (job, done) { | |
setTimeout(function () { // fake email delay | |
sendEmail(job, done); | |
}, 10000) | |
}) | |
res.json({ "name": "dangvanduc90" }) // return some data | |
}) | |
app.listen(3000) | |
console.log('Server start at: http://localhost:3000/') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment