@@ -30,6 +30,38 @@ const transporter = nodemailer.createTransport({
|
||||
// Initialize the Tasks Email Queue
|
||||
const tasksEmailQueue = taskEmailQueue();
|
||||
|
||||
// Cleanup function for the Tasks Email Queue
|
||||
const tasksEmailQueueCleanup = async () => {
|
||||
try {
|
||||
// Example async operation
|
||||
console.log("Performing Tasks Email Reminder process cleanup...");
|
||||
await new Promise((resolve) => tasksEmailQueue.destroy(() => resolve()));
|
||||
} catch (err) {
|
||||
console.error("Tasks Email Reminder process cleanup failed:", err);
|
||||
}
|
||||
};
|
||||
|
||||
// Handling SIGINT (e.g., Ctrl+C)
|
||||
process.on("SIGINT", async () => {
|
||||
await tasksEmailQueueCleanup();
|
||||
process.exit(0);
|
||||
});
|
||||
// Handling SIGTERM (e.g., sent by system shutdown)
|
||||
process.on("SIGTERM", async () => {
|
||||
await tasksEmailQueueCleanup();
|
||||
process.exit(0);
|
||||
});
|
||||
// Handling uncaught exceptions
|
||||
process.on("uncaughtException", async (err) => {
|
||||
await tasksEmailQueueCleanup();
|
||||
process.exit(1); // Exit with an 'error' code
|
||||
});
|
||||
// Handling unhandled promise rejections
|
||||
process.on("unhandledRejection", async (reason, promise) => {
|
||||
await tasksEmailQueueCleanup();
|
||||
process.exit(1); // Exit with an 'error' code
|
||||
});
|
||||
|
||||
const fromEmails = InstanceManager({
|
||||
imex: "ImEX Online <noreply@imex.online>",
|
||||
rome: "Rome Online <noreply@romeonline.io>",
|
||||
@@ -211,7 +243,7 @@ const tasksRemindEmail = async (req, res) => {
|
||||
// Send Email
|
||||
sendMail("remind", emailData.to, emailData.subject, emailData.html, taskIds, (taskIds) => {
|
||||
for (const taskId of taskIds) {
|
||||
taskEmailQueue.push(taskId);
|
||||
tasksEmailQueue.push(taskId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ const moment = require("moment/moment");
|
||||
const { client } = require("../graphql-client/graphql-client");
|
||||
const { UPDATE_TASKS_REMIND_AT_SENT } = require("../graphql-client/queries");
|
||||
const logger = require("../utils/logger");
|
||||
|
||||
const taskEmailQueue = () =>
|
||||
new Queue(
|
||||
(taskIds, cb) => {
|
||||
@@ -35,25 +34,4 @@ const taskEmailQueue = () =>
|
||||
}
|
||||
);
|
||||
|
||||
// Handle process signals
|
||||
process.on("SIGINT", () => {
|
||||
taskEmailQueue.destroy();
|
||||
process.exit(0);
|
||||
});
|
||||
process.on("SIGTERM", () => {
|
||||
taskEmailQueue.destroy();
|
||||
process.exit(0);
|
||||
});
|
||||
process.on("uncaughtException", (err) => {
|
||||
console.error("Unhandled Exception:", err);
|
||||
taskEmailQueue.destroy();
|
||||
// Perform cleanup or log before exit
|
||||
process.exit(1); // Exit with a 'failure' code
|
||||
});
|
||||
process.on("unhandledRejection", (reason, promise) => {
|
||||
console.error("Unhandled Rejection:", reason);
|
||||
taskEmailQueue.destroy();
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
module.exports = { taskEmailQueue };
|
||||
|
||||
Reference in New Issue
Block a user