All files / services/scheduler-service/src/temporal worker.js

97.29% Statements 36/37
66.66% Branches 4/6
100% Functions 2/2
97.29% Lines 36/37

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 381x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x   1x 1x 1x  
const { Worker, NativeConnection } = require('@temporalio/worker');
const path = require('path');
const config = require('../config');
const activities = require('./activities');
 
async function runWorker() {
  console.log('[Scheduler-Worker] Starting...');
 
  const connection = await NativeConnection.connect({
    address: config.temporalAddress,
  });
 
  const worker = await Worker.create({
    connection,
    taskQueue: 'scheduler-activities',
    workflowsPath: path.join(__dirname, 'workflows.js'),
    activities,
    // Laisse le déclenchement planifié en vol se terminer avant l'arrêt forcé.
    shutdownGraceTime: '80s',
  });
 
  let shuttingDown = false;
  const shutdown = (signal) => {
    if (shuttingDown) return;
    shuttingDown = true;
    console.log(`[Scheduler-Worker] ${signal} received — draining in-flight activities (up to 80s)...`);
    worker.shutdown();
  };
  process.on('SIGINT', () => shutdown('SIGINT'));
  process.on('SIGTERM', () => shutdown('SIGTERM'));
 
  console.log('[Scheduler-Worker] Listening on scheduler-activities');
  await worker.run();
  console.log('[Scheduler-Worker] Worker stopped');
}
 
module.exports = { runWorker };