0

i would like to create one Bull Queue, and put function in queue? is it possible.

for example: I have

http request /func1 + params -> start func1(params)

http request /func2 + params -> start func2(params)

http request /func3 + params -> start func3(params)

Queue name: MyQueue

How can i process func1(params), func2(params), func3(params) in MyQueue.

i do not know how to queue.add function.

import Queue from "bull";
const queue = new Queue("myQueue");
const main = async () => {
  await queue.add({ name: "John", age: 30 });
};
queue.process((job, done) => {
  console.log(job.data);
  done();
});
main().catch(console.error);

tnx a lot

user1862965
  • 327
  • 3
  • 15

1 Answers1

2

When publishing jobs to the queue you can add parameter
and based on that handle them differently

import express from "express";
import Queue from "bull";

const router = express.Router();
const queue = new Queue("myQueue");

router.get("/func1", function (req, res) {
  queue.add({ func: "func1", ...req.query.params})
});

router.get("/func2", function (req, res) {
  queue.add({ func: "func2", ...req.query.params})
});

router.get("/func3", function (req, res) {
  queue.add({ func: "func3", ...req.query.params})
});

queue.process((job, done) => {
  switch (job.data.func) {
    case "func1":
      // do something
      break;
    case "func2":
      // do something else
      break;
    case "func3":
      // do something else
      break;
    default:
      throw new Error(`unexpected func=${job.data.func}`);
  done();
});
Pavel Bely
  • 2,245
  • 1
  • 16
  • 24