/* |-------------------------------------------------------------------------- | Queue workers |-------------------------------------------------------------------------- | | Boot des workers BullMQ. V1 : on les démarre dans le même process que | l'API HTTP (simple, suffisant tant que le volume reste petit). En prod | K3s on les extraira dans un Deployment séparé (cf. backend.md §13.4). | */ import app from '@adonisjs/core/services/app' import logger from '@adonisjs/core/services/logger' import { registerWorker, shutdownQueue } from '#services/queue' import { sendRelanceJob } from '#jobs/send_relance_job' import { sendCheckinJob } from '#jobs/send_checkin_job' // On enregistre les workers seulement quand l'app sert HTTP — pas en // mode test (pour ne pas connecter Redis pendant les tests Japa) ni en // REPL (pour ne pas déclencher d'exécution latérale). if (app.getEnvironment() === 'web') { logger.info('booting BullMQ workers (relances, checkins)') registerWorker<{ taskId: string }>('relances', async (job) => { await sendRelanceJob(job.data) }) registerWorker<{ taskId: string; plain: string }>('checkins', async (job) => { await sendCheckinJob(job.data) }) app.terminating(async () => { logger.info('shutting down BullMQ workers') await shutdownQueue() }) }