diff --git a/packages/backend/src/queues/index.ts b/packages/backend/src/queues/index.ts index c141fe9..e07f0f4 100644 --- a/packages/backend/src/queues/index.ts +++ b/packages/backend/src/queues/index.ts @@ -1,8 +1,17 @@ import { Queue } from "bullmq"; import { redisConnectionOpts } from "./connection.js"; +import { logger } from "../lib/logger.js"; + +const log = logger.child({ component: "queues" }); export const mailQueue = new Queue("mail", { connection: redisConnectionOpts }); +mailQueue.on("error", (err) => { + log.error({ queue: "mail", err: err.message }, "Queue error"); +}); + +log.info("Mail queue initialized"); + export const queues: Record = { mail: mailQueue, }; diff --git a/packages/backend/src/queues/workers/mail.ts b/packages/backend/src/queues/workers/mail.ts index 6e8547d..577fb5f 100644 --- a/packages/backend/src/queues/workers/mail.ts +++ b/packages/backend/src/queues/workers/mail.ts @@ -1,11 +1,15 @@ import { Worker } from "bullmq"; import { redisConnectionOpts } from "../connection.js"; import { sendVerification, sendPasswordReset } from "../../lib/email.js"; +import { logger } from "../../lib/logger.js"; + +const log = logger.child({ component: "mail-worker" }); export function startMailWorker(): Worker { const worker = new Worker( "mail", async (job) => { + log.info({ jobId: job.id, jobName: job.name }, `Processing mail job`); switch (job.name) { case "sendVerification": await sendVerification(job.data.email as string, job.data.token as string); @@ -16,12 +20,13 @@ export function startMailWorker(): Worker { default: throw new Error(`Unknown mail job: ${job.name}`); } + log.info({ jobId: job.id, jobName: job.name }, `Mail job completed`); }, { connection: redisConnectionOpts }, ); worker.on("failed", (job, err) => { - console.error(`Mail job ${job?.id} (${job?.name}) failed:`, err.message); + log.error({ jobId: job?.id, jobName: job?.name, err: err.message }, `Mail job failed`); }); return worker;