Skip to main content
When a Worker is instantiated, the most common usage is to specify a process function. Sometimes however, it is useful to be able to specify more than one function to process a job for a specific condition.

Using Switch Statements

You can use a simple switch case to differentiate your logic based on the job name:
const worker = new Worker(
  'queueName',
  async job => {
    switch (job.name) {
      case 'taskType1': {
        await doSomeLogic1();
        break;
      }
      case 'taskType2': {
        await doSomeLogic2();
        break;
      }
    }
  },
  { connection },
);
This was a feature in the Bull package, but it creates a lot of confusion, so in order to provide an alternative, you can use this pattern. See #297 and #69 as reference.

Benefits of This Pattern

  • Single Worker Instance: Manage multiple job types without creating separate workers
  • Shared Resources: All job types can share connections, configuration, and state
  • Simple Logic: Easy to understand and maintain

Workers

Learn about worker creation and configuration

Job Types

Understand job data and naming

Build docs developers (and LLMs) love