bull-manager
Easily manage your bull queues
Getting started
$ yarn add bull-manager
Usage
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 => {}, {
concurrency: 10,
onError: (job, error) => {
console.log('my cool job failed')
}
}, {
})
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', {
})
await enqueue('my-cool-job', 'job-name', {
something: 'important'
}, {
})
API
configureQueues(options)
Configure bull-manager
by specifying the following options
:
isManager
: set to true
for workers. Defaults to false
.createRedis
: function that creates redis connections if you need custom options. Passing a function will enable connections reuse for subscriber
and client
connections. Defaults to undefined
.onError
: error handler that will be called for failed jobs when the corresponding queue doesn’t specify a custom error handler. Defaults to undefined
.
createJobQueue(name, handler, options, jobOptions)
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 the onError
handler will invoke the global error handler (when defined) with the thrown error. Defaults to undefined
.concurrency
: amount of concurrent jobs per process. Defaults to 1
.
For jobOptions
, refer to the bull documentation.
There is one additional job option:
jobIdKey
: enqueue
will set the jobId
to _.get(data, jobIdKey)
The default values are the same as in Queue#add
except for removeOnComplete
that will be true
.
joinJobQueue(name, jobOptions)
Join a job queue. Behaves like createJobQueue
except that it does not register a handler.
enqueue(name, jobTitle, data, jobOptions)
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.
disconnectQueues()
Run Queue#disconnect
on all queues.
Cool features
jobIdKey
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.
Fallthrough error handlers
Throwing in a job specific error handler will call the global error handler with that error.
Random things
- You don’t need to pass job options to
createJobQueue
if you are never going to use enqueue
in your workers. removeOnComplete
is set to true by default.
License
MIT
Miscellaneous
╚⊙ ⊙╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝