This package adds redis queue support using Bull Queue to any [micro-core](https://www.npmjs.com/package/@knetik/micro-core) application as a multi tenant adaptor.
npm install @knetik/micro-queueThis package adds redis queue support using Bull Queue to any
micro-core application
as a multi tenant adaptor.
When a customer connects to a micro-core application, the required app_id
is passed into the adaptor initializer and used as the context for any jobs
created using the micro queue Job class interface.
Install the @knetik/micro-queue package
```
yarn add @knetik/micro-queue
Add the Adaptor to your config/environments/{env}.json
``
"ADAPTORS": [
"@knetik/micro-queue"
]
Add the REDIS_HOST param as well
``
"REDIS_HOST": "127.0.0.1"
``
$ yarn run micro-queue generate {job_name}
A file is generated in app/jobs/{job_name}.job.js
if the {job_name} id some_long_process, the contents of app/jobs/{job_name}.job.js are:
`
const { JobBase } = require('@knetik/micro-queue');
module.exports = class SomeLongProcessJob extends JobBase {
static perform(App, params, progress) {
App.Logger.info('performing SomeLongProcessJob');
/ ====== EXAMPLE USAGE ========= /
App.Logger.info('SomeLongProcessJob', params);
let pending = 100;
let total = 0;
// Jobs must return a Promise
return new Promise((resolve, reject) => {
const interval = setInterval(() => {
pending -= 1;
total += 1;
App.Logger.info('SomeLongProcessJob progress', pending);
// use progress to increment the jobs progress status
progress(total);
if (!pending) {
resolve('done');
clearInterval(interval);
}
}, 1000);
});
/ ====== END EXAMPLE USAGE ========= /
}
};
// Set the max concurrency value for this job.
module.exports.concurrency = 50;
`
The Adaptor is added to the Micro Core application at App.Queue. UseApp.Queue#get to load job classes form the App's initialized jobs.
``
const Job = App.Queue.get('SomeLongProcessJob');
Call perform_later on the Job class passing in the job data and the job
options
`
const data = { hi: 'there' };
const options = {};
Job.perform_later(data, options);
`
if the Micro Express Adaptor is installed the Queue management UI is mounted at
/arena`. Visit it in the browser for handy job management.
More info is available in the DOCS