Easily manage your bull queues
$ yarn add bull-manager
On the worker side:
const {configureQueues, createJobQueue} = require('bull-manager')
configureQueues({
isSubscriber: true,
prefix: 'my-prefix',
createRedis: type => {
/* … */
},
onError: (job, error) => {
console.error('An unexpected error happened')
}
})
await createJobQueue('my-cool-job', job => {/* handler */}, {
concurrency: 10,
onError: (job, error) => {
console.log('my cool job failed')
}
}, {
/* job options */
})
On the client side:
const {configureQueues, joinJobQueue, enqueue} = require('bull-manager')
configureQueues({
prefix: 'my-prefix',
createRedis: type => {
/* … */
},
onError: (job, error) => {
console.error('An unexpected error happened')
}
})
await joinJobQueue('my-cool-job', {
/* job options */
})
await enqueue('my-cool-job', 'job-name', {
something: 'important'
}, {
/* job options */
})
Configure bull-manager
by specifying the following options
:
isManager
: set totrue
for workers. Defaults tofalse
.createRedis
: function that creates redis connections if you need custom options. Passing a function will enable connections reuse forsubscriber
andclient
connections. Defaults toundefined
.onError
: error handler that will be called for failed jobs when the corresponding queue doesn’t specify a custom error handler. Defaults toundefined
.
Create a job queue and add the corresponding handler.
It takes the following options
:
onError
: specific error handler that will be called when a job fails. Throwing withing theonError
handler will invoke the global error handler (when defined) with the thrown error. Defaults toundefined
.concurrency
: amount of concurrent jobs per process. Defaults to1
.
For jobOptions
, refer to the bull documentation.
There is one additional job option:
jobIdKey
:enqueue
will set thejobId
to_.get(data, jobIdKey)
The default values are the same as in Queue#add
except for removeOnComplete
that will be true
.
Join a job queue. Behaves like createJobQueue
except that it does not register a handler.
Add a job to the name
jobQueue.
jobTitle
is just a simple name to identify a job, it is not required. It will set name
property to data
if not set.
Run Queue#disconnect
on all queues.
Pass jobIdKey
to job options so that enqueue
will set the jobId
to _.get(data, jobIdKey)
. Only works for createJobQueue
and joinJobQueue
job options, as it doesn’t make sense for enqueue
. You always have the possibility to use jobId
in enqueue
, it will override anything else.
Throwing in a job specific error handler will call the global error handler with that error.
- You don’t need to pass job options to
createJobQueue
if you are never going to useenqueue
in your workers. removeOnComplete
is set to true by default.
MIT
╚⊙ ⊙╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝