#ProductDevelopment

[Part 2] Executing batch jobs in a multi-container environment using NodeJS and express.

Mohammed Ali Chherawalla
August 3, 2021
Contents

This is the second tutorial in a 3-Part series. If you haven’t completed the first tutorial 1, I would recommend going through it first.
(Part - 1)

(Part - 3)

Create a CRON job to be executed at 12 am every day

In this step, we will register a CRON job that executes at 12 am every day. This CRON job will simply console log the time of execution and a static message.

Step 1

Add a new QUEUE_NAME called MIDNIGHT_CRON


export const QUEUE_NAMES = {
  SCHEDULE_JOB: 'scheduleJob',
  MIDNIGHT_CRON: 'midnightCron'
};

Step 2

Add a new processor for CRON


const CRON_EXPRESSIONS = {
  MIDNIGHT: '0 0 * * *'
};

export const QUEUE_PROCESSORS = {
   ...,
  [QUEUE_NAMES.MIDNIGHT_CRON]: (job, done) => {
		console.log({ job, done });
    console.log(`${moment()}::The MIDNIGHT_CRON is being executed at 12:00am`);
    done();
  }
};

Step 3

Register the CRON job in the server/utils/queue.js


export const initQueues = () => {
  ...
  queues[QUEUE_NAMES.MIDNIGHT_CRON].add({}, { repeat: { cron: CRON_EXPRESSIONS.MIDNIGHT } });
};

We will invoke the initQueues method from the server/index.js to initialize the queues on startup. After initializing the queues we will add a CRON job to be executed at 12 am.

You should see the below logs at 12 am! Feel free to update the regex and execute the CRON sooner than 12 am to test how it works.

Commit your code using the following git commands


git add .
git commit -m 'Add support to run a CRON job at 12 AM everyday'

Where to go from here

You now have the ability to set up CRON jobs in a multi-container environment.

I hope you enjoyed reading this article as much as I enjoyed writing it. If this peaked your interest stay tuned for the next article in the series where I will take you through how to write GraphQL subscriptions in a multi-container environment using  graphql-redis-subscriptions

If you have any questions or comments, please join the forum discussion below.

Join the conversion

Schedule a meeting with Wednesday. Tell us about your product development journey and let's figure out a way to work together.
Talk to us
The Wednesday Show - A show about the design, development, and business of digital products. Every week the founders of Wednesday talk about their learnings of building digital products.
Psst! Listen to our podcast The Wednesday Show here
Close Icon