41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const { Queue, Worker } = require("bullmq");
|
|
|
|
let emailQueue;
|
|
|
|
const loadEmailQueue = async ({ pubClient, logger, redisHelpers }) => {
|
|
if (!emailQueue) {
|
|
logger.logger.info("Initializing Notifications Email Queue");
|
|
emailQueue = await new Queue("notificationsEmails", { connection: pubClient, prefix: "{BULLMQ}" });
|
|
}
|
|
|
|
// TODO: Test code for worker
|
|
// const worker = new Worker(
|
|
// "notificationsEmails",
|
|
// async (job) => {
|
|
// console.log("Processing job", job.id, "with data", job.data);
|
|
// // Simulate some work
|
|
// await new Promise((resolve) => setTimeout(resolve, 2000)); // Wait for 2 seconds
|
|
// console.log("Job processed");
|
|
// },
|
|
// { connection: pubClient, prefix: "{BULLMQ}" }
|
|
// );
|
|
//
|
|
// worker.on("completed", (job) => {
|
|
// console.log(`Job ${job.id} completed!`);
|
|
// // Optionally, close the worker after it's done
|
|
// worker.close().then(() => {
|
|
// console.log("Worker closed");
|
|
// });
|
|
// });
|
|
//
|
|
// worker.on("error", (err) => {
|
|
// console.error("Error in worker:", err);
|
|
// });
|
|
|
|
return emailQueue;
|
|
};
|
|
|
|
const getQueue = () => (!emailQueue ? loadEmailQueue : emailQueue);
|
|
|
|
module.exports = getQueue;
|