agenda dynamic job through api endpoint

20 Views Asked by At

I have created a job in api end point like

app.post('/', async (req, res) => {
  try {
    const { jobName, interval, data } = req.body;

    const dynamicJob = agenda.create(jobName, data);

    // Set the properties of the job
    dynamicJob.repeatEvery(interval);

    // Save and schedule the dynamically created job
    await dynamicJob.save();

    // Start the agenda scheduler if not already started
    if (!agenda._isRunning) {
      await agenda.start();
    }

    res.status(200).send(`Job ${jobName} created and scheduled successfully`);
  } catch (error) {
    console.error('Error creating or scheduling job:', error);
    res.status(500).send('Internal Server Error');
  }
})

but it does not run the job but when i define the job before creating it, it works like

app.post('/', async (req, res) => {
  try {
    const { jobName, interval, data } = req.body;

    // Dynamically define and create a job based on input parameters
    agenda.define(jobName, async (job) => {
      try {
        console.log(`${jobName} started at:`, new Date());

        // Simulate some work
        await new Promise(resolve => setTimeout(resolve, 5000));

        console.log(`${jobName} completed at:`, new Date());
      } catch (error) {
        console.error(`Error in ${jobName} execution:`, error);
      }
    });

    // Create a new job instance based on the provided name
    const dynamicJob = agenda.create(jobName, data);
    dynamicJob.repeatEvery(interval);

    // Save and schedule the dynamically created job
    await dynamicJob.save();

    // Start the agenda scheduler if not already started
    if (!agenda._isRunning) {
      await agenda.start();
    }

    res.status(200).send(`Job ${jobName} created and scheduled successfully`);
  } catch (error) {
    console.error('Error creating or scheduling job:', error);
    res.status(500).send('Internal Server Error');
  }
})

I want to ask you that, is it compulsory to define the job before creating the job. Doesn't it have another way to create simple dynamically job

please refer the proper way to create a job when we hit the api. I want to generate the chat gpt response with the help of openai and agenda api's. My goal is that when we create a template or question for chat gpt. the agenda create a job for every 15 min that will take response from chat gpt and notify me that these are the responses on every 15 min.

0

There are 0 best solutions below